From b1b2de814d2c59af2526bc19d41bb22a0c1fd16d Mon Sep 17 00:00:00 2001 From: Coccinelle Date: Sun, 3 Oct 2010 13:57:49 +0200 Subject: [PATCH] Release coccinelle-0.1.7 ** Language: - initialize and finalize script code, cf demos/initial_final.cocci ** Features: - -iso_limit option to limit the depth of isomorphism application - with the dir option, the include path is implicitly set to the "include" subdirectory of the specified directory, if the option -I is not used. - give a seed for the name of a fresh identifier - better handling of cpp "constructed" identifiers as in a##b, that in the futur will make it easier to match over those idents. cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing out the problem. A new "parsing hack hint" is also available: YACFE_IDENT_BUILDER, cf standard.h. ** Bugfix: - drop excessive "optimization" in ctl generation for while and for loops - allow . as the name of the directory - for type inference for an assignment, take the type of the right-hand side expression, not the type of the assigned variable - allow for with a declartion in the first header element, as in C++ (partial support) - allow for matching against variable declarations that include only storage, eg static, but no type at all. - allow for matching against types that contain both short/long and int - allow the type metavariable in the SmPL code "unsigned T" to match a T that is a type consisting of more than one word, eg long int. - -ifdef_to_if option made to process nested ifdefs (partial support) ** Internals: - improve and fix installation process (usable on BSD) - improve and fix testing process - apply patches from Eugeniy Meshcheryakov - reorganize the way we parse C identifiers, especially concatenated cpp identifiers as in a##b. This may lead to some regressions as we may not parse as much code as before. - removed popl/ and popl09/ and popl related stuff from official distrib. --- .depend | 48 - Makefile | 206 +- bugs.txt | 4 +- changes.txt | 44 +- cocci.ml | 488 +- cocci.mli | 15 +- commitmsg | 42 +- commons/.depend | 116 - commons/Makefile | 102 +- commons/authors.txt | 3 +- commons/common.ml | 385 +- commons/common.mli | 95 +- commons/features.ml.cpp | 65 + commons/ocollection/oassocb.ml | 2 +- commons/oset.ml | 6 +- commons/readme.txt | 30 + commons/seti.ml | 29 +- commons/sexp_common.ml | 319 ++ configure | 8 +- credits.txt | 5 +- ctl/Makefile | 6 +- demos/initial_final.cocci | 20 + docs/Makefile | 25 + docs/SmPL-ver2-tutorial-ols07.pdf | Bin 147073 -> 0 bytes docs/SmPL-with-grammar-ercim-evos06.pdf | Bin 256889 -> 0 bytes docs/grammar/cocci_syntax.pdf | Bin 0 -> 272985 bytes docs/grammar/cocci_syntax.tex | 52 +- docs/grammar/grammar.tex | 4 +- docs/options.pdf | Bin 90491 -> 91014 bytes docs/options.tex | 11 +- ...ntic-patches-for-collateral-evolutions.ppt | Bin 664576 -> 0 bytes docs/semantic-patches-talk-ols07.odp | Bin 52523 -> 0 bytes docs/semantic-patches-talk-ols07.ppt | Bin 659456 -> 0 bytes engine/.depend | 141 - engine/Makefile | 14 +- engine/asttoctl2.ml | 5 +- engine/asttomember.ml | 2 +- engine/c_vs_c.ml | 75 +- engine/cocci_vs_c.ml | 448 +- engine/ctlcocci_integration.ml | 14 +- engine/pattern_c.ml | 6 +- engine/postprocess_transinfo.ml | 26 +- engine/transformation_c.ml | 19 +- extra/.depend | 9 - extra/Makefile | 13 +- extra/kbuild.ml | 2 +- extra/maintainers.ml | 4 +- flag_cocci.ml | 2 +- globals/.depend | 0 globals/Makefile | 7 +- globals/{config.ml => config.ml.in} | 2 +- install.txt | 9 + main.ml | 264 +- menhirlib/.depend | 10 - menhirlib/Makefile | 17 +- ocamlsexp/Makefile | 166 + ocamlsexp/conv.ml | 342 ++ ocamlsexp/conv.mli | 348 ++ ocamlsexp/conv_error.ml | 138 + ocamlsexp/copyright.txt | 19 + ocamlsexp/lexer.mll | 174 + ocamlsexp/license-tywith.txt | 26 + ocamlsexp/license.txt | 520 ++ ocamlsexp/modif-orig.txt | 223 + ocamlsexp/parser.mly | 75 + ocamlsexp/path.ml | 175 + ocamlsexp/path.mli | 116 + ocamlsexp/pre_sexp.ml | 680 +++ ocamlsexp/sexp.ml | 1 + ocamlsexp/sexp.mli | 27 + ocamlsexp/sexp_intf.ml | 312 + ocamlsexp/type.ml | 26 + parsing_c/.depend | 132 - parsing_c/Makefile | 18 +- parsing_c/ast_c.ml | 313 +- parsing_c/ast_to_flow.ml | 55 +- parsing_c/comment_annotater_c.ml | 4 +- parsing_c/compare_c.ml | 6 +- parsing_c/control_flow_c.ml | 11 +- parsing_c/control_flow_c.mli | 4 +- parsing_c/cpp_ast_c.ml | 11 +- parsing_c/lexer_c.mll | 59 +- parsing_c/lib_parsing_c.ml | 11 +- parsing_c/parse_c.ml | 70 +- parsing_c/parser_c.mly | 185 +- parsing_c/parsing_hacks.ml | 62 +- parsing_c/parsing_hacks.mli | 1 + parsing_c/pretty_print_c.ml | 256 +- parsing_c/test_parsing_c.ml | 10 +- parsing_c/token_helpers.ml | 13 +- parsing_c/type_annoter_c.ml | 71 +- parsing_c/type_annoter_c.mli | 2 +- parsing_c/type_c.ml | 20 +- parsing_c/unparse_c.ml | 92 +- parsing_c/unparse_cocci.ml | 8 +- parsing_c/unparse_hrule.ml | 75 +- parsing_c/visitor_c.ml | 212 +- parsing_c/visitor_c.mli | 20 +- parsing_cocci/.depend | 180 +- parsing_cocci/Makefile | 13 +- parsing_cocci/adjust_pragmas.ml | 11 +- parsing_cocci/ast0_cocci.ml | 2 + parsing_cocci/ast0_cocci.mli | 2 + parsing_cocci/ast0toast.ml | 25 +- parsing_cocci/ast_cocci.ml | 16 +- parsing_cocci/ast_cocci.mli | 18 +- parsing_cocci/check_meta.ml | 17 +- parsing_cocci/comm_assoc.ml | 11 +- parsing_cocci/context_neg.ml | 57 +- parsing_cocci/data.ml | 3 + parsing_cocci/data.mli | 2 + parsing_cocci/disjdistr.ml | 3 +- parsing_cocci/flag_parsing_cocci.ml | 2 + parsing_cocci/free_vars.ml | 29 +- parsing_cocci/function_prototypes.ml | 12 +- parsing_cocci/get_constants.ml | 4 +- parsing_cocci/get_constants2.ml | 2 + parsing_cocci/insert_plus.ml | 120 +- parsing_cocci/iso_compile.ml | 5 +- parsing_cocci/iso_pattern.ml | 345 +- parsing_cocci/iso_pattern.mli | 2 +- parsing_cocci/lexer_cocci.mll | 8 +- parsing_cocci/parse_aux.ml | 23 +- parsing_cocci/parse_cocci.ml | 42 +- parsing_cocci/parser_cocci_menhir.ml | 5068 +++++++++-------- parsing_cocci/parser_cocci_menhir.mli | 2 + parsing_cocci/parser_cocci_menhir.mly | 25 +- parsing_cocci/pretty_print_cocci.ml | 68 +- parsing_cocci/simple_assignments.ml | 10 +- parsing_cocci/single_statement.ml | 16 +- parsing_cocci/test_exps.ml | 14 +- parsing_cocci/type_infer.ml | 35 +- parsing_cocci/unitary_ast0.ml | 56 +- parsing_cocci/visitor_ast.ml | 1 + parsing_cocci/visitor_ast0.ml | 2304 ++++---- parsing_cocci/visitor_ast0.mli | 197 +- parsing_cocci/visitor_ast0_types.ml | 181 + popl/Makefile | 104 - popl/ast_popl.ml | 38 - popl/asttopopl.ml | 74 - popl/asttopopl.mli | 1 - popl/insert_befaft.ml | 113 - popl/insert_befaft.mli | 1 - popl/insert_quantifiers.ml | 95 - popl/insert_quantifiers.mli | 1 - popl/popl.ml | 39 - popl/popl.mli | 5 - popl/popltoctl.ml | 202 - popl/popltoctl.mli | 5 - popl/pretty_print_popl.ml | 76 - popl/pretty_print_popl.mli | 2 - popl09/.depend | 33 - popl09/Makefile | 102 - popl09/ast_popl.ml | 48 - popl09/asttopopl.ml | 98 - popl09/asttopopl.mli | 1 - popl09/flag_popl.ml | 24 - popl09/insert_quantifiers.ml | 113 - popl09/insert_quantifiers.mli | 1 - popl09/popl.ml | 38 - popl09/popl.mli | 5 - popl09/popltoctl.ml | 237 - popl09/popltoctl.mli | 5 - popl09/pretty_print_popl.ml | 97 - popl09/pretty_print_popl.mli | 2 - pycaml/Makefile | 4 +- python/.depend | 14 +- python/Makefile | 21 +- python/coccilib/Makefile | 2 +- python/coccilib/output.py | 1 - python/coccilib/output_base.py | 4 - python/coccilib/output_gui.py | 125 + python/no_pycocci_aux.ml | 2 +- python/pycocci.ml | 1 - python/pycocci_aux.ml | 1 - python/yes_pycocci.ml | 10 +- readme.txt | 5 +- scripts/spatch.sh | 4 +- standard.h | 27 +- testing.ml | 106 +- tests/SCORE_expected.sexp | 145 + tests/{A_and_E.c => a_and_e.c} | 0 tests/{A_and_E.cocci => a_and_e.cocci} | 0 tests/{A_and_E.res => a_and_e.res} | 0 tests/{A_and_E_ver1.c => a_and_e_ver1.c} | 0 tests/{A_and_E_ver1.res => a_and_e_ver1.res} | 0 tests/bugon.cocci | 2 +- tests/bugon.res | 2 +- tests/double_switch.c | 15 + tests/double_switch.cocci | 7 + tests/double_switch.res | 15 + tests/longlongint.c | 9 + tests/longlongint.cocci | 8 + tests/{hex2.res => longlongint.res} | 1 + tests/not_converted.c | 14 + tests/not_converted.cocci | 46 + tests/not_converted_ver1.c | 92 + tests/pb_parsing_macro.c | 4 + tests/pb_parsing_macro.cocci | 5 + tests/pb_parsing_macro.res | 4 + tools/Makefile | 9 +- 201 files changed, 11832 insertions(+), 7672 deletions(-) delete mode 100644 .depend rewrite commitmsg (97%) delete mode 100644 commons/.depend create mode 100644 commons/features.ml.cpp create mode 100644 commons/readme.txt create mode 100644 commons/sexp_common.ml create mode 100644 demos/initial_final.cocci create mode 100644 docs/Makefile delete mode 100644 docs/SmPL-ver2-tutorial-ols07.pdf delete mode 100644 docs/SmPL-with-grammar-ercim-evos06.pdf create mode 100644 docs/grammar/cocci_syntax.pdf delete mode 100644 docs/semantic-patches-for-collateral-evolutions.ppt delete mode 100644 docs/semantic-patches-talk-ols07.odp delete mode 100644 docs/semantic-patches-talk-ols07.ppt delete mode 100644 engine/.depend delete mode 100644 extra/.depend delete mode 100644 globals/.depend rename globals/{config.ml => config.ml.in} (90%) delete mode 100644 menhirlib/.depend create mode 100644 ocamlsexp/Makefile create mode 100644 ocamlsexp/conv.ml create mode 100644 ocamlsexp/conv.mli create mode 100644 ocamlsexp/conv_error.ml create mode 100644 ocamlsexp/copyright.txt create mode 100644 ocamlsexp/lexer.mll create mode 100644 ocamlsexp/license-tywith.txt create mode 100644 ocamlsexp/license.txt create mode 100644 ocamlsexp/modif-orig.txt create mode 100644 ocamlsexp/parser.mly create mode 100644 ocamlsexp/path.ml create mode 100644 ocamlsexp/path.mli create mode 100644 ocamlsexp/pre_sexp.ml create mode 100644 ocamlsexp/sexp.ml create mode 100644 ocamlsexp/sexp.mli create mode 100644 ocamlsexp/sexp_intf.ml create mode 100644 ocamlsexp/type.ml delete mode 100644 parsing_c/.depend rewrite parsing_cocci/visitor_ast0.ml (81%) rewrite parsing_cocci/visitor_ast0.mli (98%) create mode 100644 parsing_cocci/visitor_ast0_types.ml delete mode 100644 popl/Makefile delete mode 100644 popl/ast_popl.ml delete mode 100644 popl/asttopopl.ml delete mode 100644 popl/asttopopl.mli delete mode 100644 popl/insert_befaft.ml delete mode 100644 popl/insert_befaft.mli delete mode 100644 popl/insert_quantifiers.ml delete mode 100644 popl/insert_quantifiers.mli delete mode 100644 popl/popl.ml delete mode 100644 popl/popl.mli delete mode 100644 popl/popltoctl.ml delete mode 100644 popl/popltoctl.mli delete mode 100644 popl/pretty_print_popl.ml delete mode 100644 popl/pretty_print_popl.mli delete mode 100644 popl09/.depend delete mode 100644 popl09/Makefile delete mode 100644 popl09/ast_popl.ml delete mode 100644 popl09/asttopopl.ml delete mode 100644 popl09/asttopopl.mli delete mode 100644 popl09/flag_popl.ml delete mode 100644 popl09/insert_quantifiers.ml delete mode 100644 popl09/insert_quantifiers.mli delete mode 100644 popl09/popl.ml delete mode 100644 popl09/popl.mli delete mode 100644 popl09/popltoctl.ml delete mode 100644 popl09/popltoctl.mli delete mode 100644 popl09/pretty_print_popl.ml delete mode 100644 popl09/pretty_print_popl.mli delete mode 120000 python/coccilib/output.py create mode 100644 python/coccilib/output_gui.py delete mode 120000 python/pycocci.ml delete mode 120000 python/pycocci_aux.ml create mode 100644 tests/SCORE_expected.sexp rename tests/{A_and_E.c => a_and_e.c} (100%) rename tests/{A_and_E.cocci => a_and_e.cocci} (100%) rename tests/{A_and_E.res => a_and_e.res} (100%) rename tests/{A_and_E_ver1.c => a_and_e_ver1.c} (100%) rename tests/{A_and_E_ver1.res => a_and_e_ver1.res} (100%) create mode 100644 tests/double_switch.c create mode 100644 tests/double_switch.cocci create mode 100644 tests/double_switch.res create mode 100644 tests/longlongint.c create mode 100644 tests/longlongint.cocci rename tests/{hex2.res => longlongint.res} (55%) create mode 100644 tests/not_converted.c create mode 100644 tests/not_converted.cocci create mode 100644 tests/not_converted_ver1.c create mode 100644 tests/pb_parsing_macro.c create mode 100644 tests/pb_parsing_macro.cocci create mode 100644 tests/pb_parsing_macro.res diff --git a/.depend b/.depend deleted file mode 100644 index 9fe1035..0000000 --- a/.depend +++ /dev/null @@ -1,48 +0,0 @@ -cocci.cmi: commons/common.cmi parsing_cocci/ast_cocci.cmi -testing.cmi: commons/common.cmi parsing_cocci/ast_cocci.cmi -cocci.cmo: parsing_cocci/visitor_ast.cmi parsing_c/unparse_hrule.cmi \ - parsing_c/unparse_c.cmi parsing_c/type_annoter_c.cmi \ - engine/transformation_c.cmi python/pycocci.cmo \ - engine/pretty_print_engine.cmi parsing_cocci/pretty_print_cocci.cmi \ - popl09/popl.cmi parsing_c/parsing_hacks.cmi parsing_cocci/parse_cocci.cmi \ - parsing_c/parse_c.cmi commons/ograph_extended.cmi engine/lib_engine.cmo \ - parsing_c/flag_parsing_c.cmo ctl/flag_ctl.cmo flag_cocci.cmo \ - globals/flag.cmo engine/ctltotex.cmi engine/ctlcocci_integration.cmi \ - ctl/ctl_engine.cmi parsing_c/cpp_ast_c.cmi parsing_c/control_flow_c.cmi \ - parsing_c/compare_c.cmi commons/common.cmi \ - parsing_c/comment_annotater_c.cmi engine/asttomember.cmi \ - engine/asttoctl2.cmi parsing_c/ast_to_flow.cmi \ - parsing_cocci/ast_cocci.cmi parsing_c/ast_c.cmo cocci.cmi -cocci.cmx: parsing_cocci/visitor_ast.cmx parsing_c/unparse_hrule.cmx \ - parsing_c/unparse_c.cmx parsing_c/type_annoter_c.cmx \ - engine/transformation_c.cmx python/pycocci.cmx \ - engine/pretty_print_engine.cmx parsing_cocci/pretty_print_cocci.cmx \ - popl09/popl.cmx parsing_c/parsing_hacks.cmx parsing_cocci/parse_cocci.cmx \ - parsing_c/parse_c.cmx commons/ograph_extended.cmx engine/lib_engine.cmx \ - parsing_c/flag_parsing_c.cmx ctl/flag_ctl.cmx flag_cocci.cmx \ - globals/flag.cmx engine/ctltotex.cmx engine/ctlcocci_integration.cmx \ - ctl/ctl_engine.cmx parsing_c/cpp_ast_c.cmx parsing_c/control_flow_c.cmx \ - parsing_c/compare_c.cmx commons/common.cmx \ - parsing_c/comment_annotater_c.cmx engine/asttomember.cmx \ - engine/asttoctl2.cmx parsing_c/ast_to_flow.cmx \ - parsing_cocci/ast_cocci.cmx parsing_c/ast_c.cmx cocci.cmi -main.cmo: testing.cmi parsing_c/test_parsing_c.cmi python/pycocci.cmo \ - parsing_c/parse_c.cmi extra/kbuild.cmi popl09/flag_popl.cmo \ - parsing_cocci/flag_parsing_cocci.cmo parsing_c/flag_parsing_c.cmo \ - engine/flag_matcher.cmo ctl/flag_ctl.cmo flag_cocci.cmo globals/flag.cmo \ - engine/ctlcocci_integration.cmi globals/config.cmo commons/common.cmi \ - cocci.cmi -main.cmx: testing.cmx parsing_c/test_parsing_c.cmx python/pycocci.cmx \ - parsing_c/parse_c.cmx extra/kbuild.cmx popl09/flag_popl.cmx \ - parsing_cocci/flag_parsing_cocci.cmx parsing_c/flag_parsing_c.cmx \ - engine/flag_matcher.cmx ctl/flag_ctl.cmx flag_cocci.cmx globals/flag.cmx \ - engine/ctlcocci_integration.cmx globals/config.cmx commons/common.cmx \ - cocci.cmx -testing.cmo: parsing_cocci/pretty_print_cocci.cmi \ - parsing_cocci/parse_cocci.cmi flag_cocci.cmo globals/flag.cmo \ - globals/config.cmo parsing_c/compare_c.cmi commons/common.cmi cocci.cmi \ - testing.cmi -testing.cmx: parsing_cocci/pretty_print_cocci.cmx \ - parsing_cocci/parse_cocci.cmx flag_cocci.cmx globals/flag.cmx \ - globals/config.cmx parsing_c/compare_c.cmx commons/common.cmx cocci.cmx \ - testing.cmi diff --git a/Makefile b/Makefile index f516238..2a49292 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ -include Makefile.config -VERSION=$(shell cat globals/config.ml |grep version |perl -p -e 's/.*"(.*)".*/$$1/;') +VERSION=$(shell cat globals/config.ml.in |grep version |perl -p -e 's/.*"(.*)".*/$$1/;') ############################################################################## # Variables @@ -33,12 +33,11 @@ TARGET=spatch SRC=flag_cocci.ml cocci.ml testing.ml test.ml main.ml - ifeq ($(FEATURE_PYTHON),1) PYCMA=pycaml/pycaml.cma PYDIR=pycaml PYLIB=dllpycaml_stubs.so -# the following is essential for Coccinelle to compile under gentoo (wierd) +# the following is essential for Coccinelle to compile under gentoo (weird) OPTLIBFLAGS=-cclib dllpycaml_stubs.so else PYCMA= @@ -47,18 +46,24 @@ PYLIB= OPTLIBFLAGS= endif +SEXPSYSCMA=bigarray.cma nums.cma -SYSLIBS=str.cma unix.cma -LIBS=commons/commons.cma globals/globals.cma\ +SYSLIBS=str.cma unix.cma $(SEXPSYSCMA) +LIBS=commons/commons.cma \ + ocamlsexp/sexplib1.cma commons/commons_sexp.cma \ + globals/globals.cma \ ctl/ctl.cma \ parsing_cocci/cocci_parser.cma parsing_c/parsing_c.cma \ - engine/cocciengine.cma popl09/popl.cma \ + engine/cocciengine.cma \ extra/extra.cma $(PYCMA) python/coccipython.cma -MAKESUBDIRS=commons globals menhirlib $(PYDIR) ctl parsing_cocci parsing_c \ - engine popl09 extra python -INCLUDEDIRS=commons commons/ocamlextra globals menhirlib $(PYDIR) ctl \ - parsing_cocci parsing_c engine popl09 extra python +#used for clean: and depend: and a little for rec & rec.opt +MAKESUBDIRS=commons ocamlsexp \ + globals menhirlib $(PYDIR) ctl parsing_cocci parsing_c \ + engine extra python +INCLUDEDIRS=commons commons/ocamlextra ocamlsexp \ + globals menhirlib $(PYDIR) ctl \ + parsing_cocci parsing_c engine extra python ############################################################################## # Generic variables @@ -101,25 +106,42 @@ BYTECODE_STATIC=-custom ############################################################################## # Top rules ############################################################################## -.PHONY: all all.opt opt top clean configure -.PHONY: $(MAKESUBDIRS) $(MAKESUBDIRS:%=%.opt) subdirs subdirs.opt +.PHONY:: all all.opt byte opt top clean distclean configure +.PHONY:: $(MAKESUBDIRS) $(MAKESUBDIRS:%=%.opt) subdirs subdirs.opt + +all: byte + $(MAKE) preinstall + +opt: all.opt +all.opt: opt-compil + $(MAKE) preinstall -all: +world: + $(MAKE) byte + $(MAKE) opt + $(MAKE) preinstall + +byte: .depend $(MAKE) subdirs $(MAKE) $(EXEC) -opt: +opt-compil: .depend $(MAKE) subdirs.opt $(MAKE) $(EXEC).opt -all.opt: opt top: $(EXEC).top subdirs: - +for D in $(MAKESUBDIRS); do $(MAKE) $$D ; done + $(MAKE) -C commons OCAMLCFLAGS="$(OCAMLCFLAGS)" + $(MAKE) -C ocamlsexp OCAMLCFLAGS="$(OCAMLCFLAGS)" + $(MAKE) -C commons sexp OCAMLCFLAGS="$(OCAMLCFLAGS)" + +for D in $(MAKESUBDIRS); do $(MAKE) $$D || exit 1 ; done subdirs.opt: - +for D in $(MAKESUBDIRS); do $(MAKE) $$D.opt ; done + $(MAKE) -C commons all.opt OCAMLCFLAGS="$(OCAMLCFLAGS)" + $(MAKE) -C ocamlsexp all.opt OCAMLCFLAGS="$(OCAMLCFLAGS)" + $(MAKE) -C commons sexp.opt OCAMLCFLAGS="$(OCAMLCFLAGS)" + +for D in $(MAKESUBDIRS); do $(MAKE) $$D.opt || exit 1 ; done $(MAKESUBDIRS): $(MAKE) -C $@ OCAMLCFLAGS="$(OCAMLCFLAGS)" all @@ -127,6 +149,7 @@ $(MAKESUBDIRS): $(MAKESUBDIRS:%=%.opt): $(MAKE) -C $(@:%.opt=%) OCAMLCFLAGS="$(OCAMLCFLAGS)" all.opt +#dependencies: # commons: # globals: # menhirlib: @@ -134,28 +157,12 @@ $(MAKESUBDIRS:%=%.opt): # parsing_c:parsing_cocci # ctl:globals commons # engine: parsing_cocci parsing_c ctl -# popl09:engine # extra: parsing_cocci parsing_c ctl # pycaml: # python:pycaml parsing_cocci parsing_c -# -# commons.opt: -# globals.opt: -# menhirlib.opt: -# parsing_cocci.opt: commons.opt globals.opt menhirlib.opt -# parsing_c.opt:parsing_cocci.opt -# ctl.opt:globals.opt commons.opt -# engine.opt: parsing_cocci.opt parsing_c.opt ctl.opt -# popl09.opt:engine.opt -# extra.opt: parsing_cocci.opt parsing_c.opt ctl.opt -# pycaml.opt: -# python.opt:pycaml.opt parsing_cocci.opt parsing_c.opt clean:: - set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i clean; done - -configure: - ./configure + set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i $@; done $(LIBS): $(MAKESUBDIRS) $(LIBS:.cma=.cmxa): $(MAKESUBDIRS:%=%.opt) @@ -179,14 +186,17 @@ clean:: rm -f dllpycaml_stubs.so -.PHONY: tools all configure +.PHONY:: tools configure + +configure: + ./configure tools: $(MAKE) -C tools + clean:: $(MAKE) -C tools clean - static: rm -f spatch.opt spatch $(MAKE) STATIC="-ccopt -static" spatch.opt @@ -197,6 +207,52 @@ purebytecode: $(MAKE) BYTECODE_STATIC="" spatch +############################################################################## +# Build documentation +############################################################################## +.PHONY:: docs + +docs: + make -C docs + +clean:: + make -C docs clean + +distclean:: + make -C docs distclean + +############################################################################## +# Pre-Install (customization of spatch frontend script) +############################################################################## +.PHONY:: preinstall preinstall-def preinstall-byte preinstall-opt + +preinstall: preinstall-def preinstall-byte preinstall-opt + +# user will use spatch to run spatch.opt (native) +preinstall-def: + cp scripts/spatch.sh scripts/spatch.tmp2 + sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.tmp2 > scripts/spatch.tmp + sed "s|LIBDIR|$(LIBDIR)|g" scripts/spatch.tmp > scripts/spatch + rm -f scripts/spatch.tmp2 scripts/spatch.tmp + +# user will use spatch to run spatch (bytecode) +preinstall-byte: + cp scripts/spatch.sh scripts/spatch.tmp3 + sed "s|\.opt||" scripts/spatch.tmp3 > scripts/spatch.tmp2 + sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.tmp2 > scripts/spatch.tmp + sed "s|LIBDIR|$(LIBDIR)|g" scripts/spatch.tmp > scripts/spatch.byte + rm -f scripts/spatch.tmp3 scripts/spatch.tmp2 scripts/spatch.tmp + +# user will use spatch.opt to run spatch.opt (native) +preinstall-opt: + cp scripts/spatch.sh scripts/spatch.opt.tmp2 + sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.opt.tmp2 > scripts/spatch.opt.tmp + sed "s|LIBDIR|$(LIBDIR)|g" scripts/spatch.opt.tmp > scripts/spatch.opt + rm -f scripts/spatch.opt.tmp scripts/spatch.opt.tmp2 + +clean:: + rm -f scripts/spatch scripts/spatch.byte scripts/spatch.opt + ############################################################################## # Install ############################################################################## @@ -224,25 +280,36 @@ install-python: $(DESTDIR)$(SHAREDIR)/python/coccilib $(INSTALL_DATA) python/coccilib/coccigui/*.py \ $(DESTDIR)$(SHAREDIR)/python/coccilib/coccigui + $(INSTALL_DATA) python/coccilib/coccigui/pygui.glade \ + $(DESTDIR)$(SHAREDIR)/python/coccilib/coccigui + $(INSTALL_DATA) python/coccilib/coccigui/pygui.gladep \ + $(DESTDIR)$(SHAREDIR)/python/coccilib/coccigui $(INSTALL_LIB) dllpycaml_stubs.so $(DESTDIR)$(LIBDIR) +install: + @if test -x spatch -a ! -x spatch.opt ; then \ + $(MAKE) install-byte;fi + @if test ! -x spatch -a -x spatch.opt ; then \ + $(MAKE) install-def; $(MAKE) install-opt;fi + @if test -x spatch -a -x spatch.opt ; then \ + $(MAKE) install-byte; $(MAKE) install-opt;fi + @if test ! -x spatch -a ! -x spatch.opt ; then \ + echo "\n\n\t==> Run 'make', 'make opt', or both first. <==\n\n";fi + # user will use spatch to run spatch.opt (native) -install: all.opt install-common +install-def: install-common $(INSTALL_PROGRAM) spatch.opt $(DESTDIR)$(SHAREDIR) - cat scripts/spatch.sh | sed "s|SHAREDIR|$(SHAREDIR)|g" > $(DESTDIR)$(BINDIR)/spatch - chmod 755 $(DESTDIR)$(BINDIR)/spatch + $(INSTALL_PROGRAM) scripts/spatch $(DESTDIR)$(BINDIR)/spatch # user will use spatch to run spatch (bytecode) -install-byte: all install-common +install-byte: install-common $(INSTALL_PROGRAM) spatch $(DESTDIR)$(SHAREDIR) - cat scripts/spatch.sh | sed "s|\.opt||" | sed "s|SHAREDIR|$(SHAREDIR)|g" > $(DESTDIR)$(BINDIR)/spatch - chmod 755 $(DESTDIR)$(BINDIR)/spatch + $(INSTALL_PROGRAM) scripts/spatch.byte $(DESTDIR)$(BINDIR)/spatch # user will use spatch.opt to run spatch.opt (native) -install-opt: all.opt install-common +install-opt: install-common $(INSTALL_PROGRAM) spatch.opt $(DESTDIR)$(SHAREDIR) - cat scripts/spatch.sh | sed "s|SHAREDIR|$(SHAREDIR)|g" > $(DESTDIR)$(BINDIR)/spatch.opt - chmod 755 $(DESTDIR)$(BINDIR)/spatch.opt + $(INSTALL_PROGRAM) scripts/spatch.opt $(DESTDIR)$(BINDIR)/spatch.opt uninstall: rm -f $(DESTDIR)$(BINDIR)/spatch @@ -253,8 +320,6 @@ uninstall: rm -rf $(DESTDIR)$(SHAREDIR)/python/coccilib rm -f $(DESTDIR)$(MANDIR)/man1/spatch.1 - - version: @echo $(VERSION) @@ -266,7 +331,9 @@ version: PACKAGE=coccinelle-$(VERSION) BINSRC=spatch env.sh env.csh standard.h standard.iso \ - *.txt docs/* \ + *.txt \ + docs/options.pdf docs/grammar/cocci_syntax.pdf docs/spatch.1 \ + docs/cocci-python.txt \ demos/foo.* demos/simple.* # $(PYLIB) python/coccilib/ demos/printloc.* BINSRC2=$(BINSRC:%=$(PACKAGE)/%) @@ -282,6 +349,8 @@ OCAMLVERSION=$(shell ocaml -version |perl -p -e 's/.*version (.*)/$$1/;') # touch **/* # make licensify # remember to comment the -g -dtypes in this Makefile +# You can also remove a few things, for instance I removed in this +# Makefile things related to popl/ and popl09/ # Procedure to do each time: # cvs update @@ -305,18 +374,25 @@ OCAMLVERSION=$(shell ocaml -version |perl -p -e 's/.*version (.*)/$$1/;') package: make srctar + ./configure --without-python + make docs make bintar make staticbintar make bytecodetar # I currently pre-generate the parser so the user does not have to -# install menhir on his machine. I also do a few cleanups like 'rm todo_pos'. +# install menhir on his machine. We could also do a few cleanups. # You may have first to do a 'make licensify'. +# +# update: make docs generates pdf but also some ugly .log files, so +# make clean is there to remove them while not removing the pdf +# (only distclean remove the pdfs). srctar: + make distclean + make docs make clean cp -a . $(TMP)/$(PACKAGE) cd $(TMP)/$(PACKAGE); cd parsing_cocci/; make parser_cocci_menhir.ml - cd $(TMP)/$(PACKAGE); rm -f todo_pos cd $(TMP); tar cvfz $(PACKAGE).tgz --exclude-vcs $(PACKAGE) rm -rf $(TMP)/$(PACKAGE) @@ -350,7 +426,7 @@ clean:: -TOLICENSIFY=ctl engine parsing_cocci popl popl09 python +TOLICENSIFY=ctl engine parsing_cocci python licensify: ocaml tools/licensify.ml set -e; for i in $(TOLICENSIFY); do cd $$i; ocaml ../tools/licensify.ml; cd ..; done @@ -381,6 +457,7 @@ website: cp $(TMP)/$(PACKAGE)-bin-x86-static.tgz $(WEBSITE) cp $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz $(WEBSITE) rm -f $(WEBSITE)/LATEST* $(WEBSITE)/coccinelle-latest.tgz + cp changes.txt $(WEBSITE)/changes-$(VERSION).txt cd $(WEBSITE); touch LATEST_IS_$(VERSION); ln -s $(PACKAGE).tgz coccinelle-latest.tgz @@ -403,6 +480,11 @@ update_darcs: diff_darcs: set -e; for i in $(DARCSFORESTS); do cd $$i; darcs diff -u; cd ..; done +############################################################################## +# Git Developer rules +############################################################################## +gitupdate: + git cvsimport -d :ext:topps:/var/cvs/cocci coccinelle ############################################################################## # Developer rules @@ -429,7 +511,7 @@ tags: otags -no-mli-tags -r . dependencygraph: - find -name "*.ml" |grep -v "scripts" | xargs ocamldep -I commons -I globals -I ctl -I parsing_cocci -I parsing_c -I engine -I popl09 -I extra > /tmp/dependfull.depend + find -name "*.ml" |grep -v "scripts" | xargs ocamldep -I commons -I globals -I ctl -I parsing_cocci -I parsing_c -I engine -I extra > /tmp/dependfull.depend ocamldot -lr /tmp/dependfull.depend > /tmp/dependfull.dot dot -Tps /tmp/dependfull.dot > /tmp/dependfull.ps ps2pdf /tmp/dependfull.ps /tmp/dependfull.pdf @@ -474,14 +556,28 @@ beforedepend:: test.ml clean:: rm -f *.cm[iox] *.o *.annot - -clean:: rm -f *~ .*~ *.exe #*# +distclean:: clean + set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i $@; done + rm -f .depend + rm -f Makefile.config + rm -f python/coccilib/output.py + rm -f python/pycocci.ml + rm -f python/pycocci_aux.ml + rm -f globals/config.ml + rm -f TAGS + rm -f tests/SCORE_actual.sexp + rm -f tests/SCORE_best_of_both.sexp + find -name ".#*1.*" | xargs rm -f + beforedepend:: depend:: beforedepend $(OCAMLDEP) *.mli *.ml > .depend - set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i depend; done + set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i $@; done + +.depend:: + @if [ ! -f .depend ] ; then $(MAKE) depend ; fi -include .depend diff --git a/bugs.txt b/bugs.txt index be2f557..e16be60 100644 --- a/bugs.txt +++ b/bugs.txt @@ -1,2 +1,2 @@ -Send a mail to julia@diku.dk or yoann.padioleau@gmail.com with [Bug-Cocci] as -a prefix in the subject of your mail. +Send a mail to cocci@diku.dk, or julia@diku.dk or yoann.padioleau@gmail.com +with [Bug-Cocci] as a prefix in the subject of your mail. diff --git a/changes.txt b/changes.txt index 88141ff..130a473 100644 --- a/changes.txt +++ b/changes.txt @@ -1,7 +1,50 @@ -*- org -*- +* 0.1.7 + +** Language: +- initialize and finalize script code, cf demos/initial_final.cocci + +** Features: +- -iso_limit option to limit the depth of isomorphism application +- with the dir option, the include path is implicitly set to the "include" + subdirectory of the specified directory, if the option -I is not used. +- give a seed for the name of a fresh identifier +- better handling of cpp "constructed" identifiers as in a##b, that in + the futur will make it easier to match over those idents. + cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing + out the problem. A new "parsing hack hint" is also available: + YACFE_IDENT_BUILDER, cf standard.h. + +** Bugfix: +- drop excessive "optimization" in ctl generation for while and for loops +- allow . as the name of the directory +- for type inference for an assignment, take the type of the right-hand + side expression, not the type of the assigned variable +- allow for with a declartion in the first header element, as in C++ + (partial support) +- allow for matching against variable declarations that include only + storage, eg static, but no type at all. +- allow for matching against types that contain both short/long and int +- allow the type metavariable in the SmPL code "unsigned T" to match a T + that is a type consisting of more than one word, eg long int. +- -ifdef_to_if option made to process nested ifdefs + (partial support) + +** Internals: +- improve and fix installation process (usable on BSD) +- improve and fix testing process +- apply patches from Eugeniy Meshcheryakov +- reorganize the way we parse C identifiers, especially concatenated cpp + identifiers as in a##b. This may lead to some regressions as we may + not parse as much code as before. +- removed popl/ and popl09/ and popl related stuff from official distrib. + * 0.1.6 +** Language: +- the ability to add comments + ** Features: - grouping of generated rules with -hrule option - handling of special coccinelle comments @@ -9,7 +52,6 @@ /* {{coccinelle:skip_end}} */ allowing to give more hints to the C parser. Thanks to Flavien@lebarbe.net for the idea. -- the ability to add comments - the ability to print the values of more (but not all) kinds of metavariables from python - new vim SmPL mode. diff --git a/cocci.ml b/cocci.ml index 32bb774..337a491 100644 --- a/cocci.ml +++ b/cocci.ml @@ -101,12 +101,13 @@ let ast_to_flow_with_error_messages a = (* --------------------------------------------------------------------- *) (* Ctl related *) (* --------------------------------------------------------------------- *) + let ctls_of_ast2 ast ua pos = List.map2 (function ast -> function (ua,pos) -> List.combine (if !Flag_cocci.popl - then Popl.popl ast + then failwith "no popl here" (* Popl.popl ast *) else Asttoctl2.asttoctl ast ua pos) (Asttomember.asttomember ast ua)) ast (List.combine ua pos) @@ -145,7 +146,6 @@ let show_or_not_cocci2 coccifile isofile = let show_or_not_cocci a b = Common.profile_code "show_xxx" (fun () -> show_or_not_cocci2 a b) - (* the output *) let show_or_not_diff2 cfile outfile show_only_minus = @@ -166,12 +166,11 @@ let show_or_not_diff2 cfile outfile show_only_minus = (* create something that looks like the output of patch *) (Some prefix,minus_file::plus_file::rest) -> let drop_prefix file = - if prefix = "" + if prefix =$= "" then "/"^file else - (match Str.split (Str.regexp prefix) file with - [base_file] -> base_file - | _ -> failwith "prefix not found in the old file name") in + let lp = String.length prefix in + String.sub file lp ((String.length file) - lp) in let diff_line = match List.rev(Str.split (Str.regexp " ") line) with new_file::old_file::cmdrev -> @@ -202,7 +201,7 @@ let show_or_not_diff2 cfile outfile show_only_minus = (Printf.sprintf "bad diff header lines: %s %s" (String.concat ":" l1) (String.concat ":" l2)) in diff_line::minus_line::plus_line::rest - | _ -> res in + | _ -> res in xs +> List.iter (fun s -> if s =~ "^\\+" && show_only_minus then () @@ -278,19 +277,23 @@ let show_or_not_ctl_text a b c = (* running information *) let get_celem celem : string = match celem with - Ast_c.Definition ({Ast_c.f_name = funcs;},_) -> funcs + Ast_c.Definition ({Ast_c.f_name = namefuncs;},_) -> + Ast_c.str_of_name namefuncs | Ast_c.Declaration - (Ast_c.DeclList ([{Ast_c.v_namei = Some ((s, _),_);}, _], _)) -> s + (Ast_c.DeclList ([{Ast_c.v_namei = Some (name, _);}, _], _)) -> + Ast_c.str_of_name name | _ -> "" let show_or_not_celem2 prelude celem = let (tag,trying) = (match celem with - | Ast_c.Definition ({Ast_c.f_name = funcs;},_) -> + | Ast_c.Definition ({Ast_c.f_name = namefuncs},_) -> + let funcs = Ast_c.str_of_name namefuncs in Flag.current_element := funcs; (" function: ",funcs) | Ast_c.Declaration - (Ast_c.DeclList ([{Ast_c.v_namei = Some ((s, _),_);}, _], _)) -> + (Ast_c.DeclList ([{Ast_c.v_namei = Some (name,_)}, _], _)) -> + let s = Ast_c.str_of_name name in Flag.current_element := s; (" variable ",s); | _ -> @@ -453,6 +456,11 @@ let sp_contain_typed_metavar rules = * serio.c is related we think to #include *) +let interpret_include_path _ = + match !Flag_cocci.include_path with + None -> "include" + | Some x -> x + let (includes_to_parse: (Common.filename * Parse_c.program2) list -> Flag_cocci.include_options -> 'a) = fun xs choose_includes -> @@ -460,7 +468,7 @@ let (includes_to_parse: Flag_cocci.I_UNSPECIFIED -> failwith "not possible" | Flag_cocci.I_NO_INCLUDES -> [] | x -> - let all_includes = x = Flag_cocci.I_ALL_INCLUDES in + let all_includes = x =*= Flag_cocci.I_ALL_INCLUDES in xs +> List.map (fun (file, cs) -> let dir = Common.dirname file in @@ -477,16 +485,16 @@ let (includes_to_parse: then let attempt2 = Filename.concat dir (Common.last xs) in if not (Sys.file_exists f) && all_includes - then Some (Filename.concat !Flag_cocci.include_path + then Some (Filename.concat (interpret_include_path()) (Common.join "/" xs)) else Some attempt2 else Some f | Ast_c.NonLocal xs -> if all_includes || - Common.fileprefix (Common.last xs) = Common.fileprefix file + Common.fileprefix (Common.last xs) =$= Common.fileprefix file then - Some (Filename.concat !Flag_cocci.include_path + Some (Filename.concat (interpret_include_path()) (Common.join "/" xs)) else None | Ast_c.Weird _ -> None @@ -682,8 +690,12 @@ type toplevel_cocci_info_cocci_rule = { type toplevel_cocci_info = ScriptRuleCocciInfo of toplevel_cocci_info_script_rule + | InitialScriptRuleCocciInfo of toplevel_cocci_info_script_rule + | FinalScriptRuleCocciInfo of toplevel_cocci_info_script_rule | CocciRuleCocciInfo of toplevel_cocci_info_cocci_rule +type cocci_info = toplevel_cocci_info list * string list list (* tokens *) + type kind_file = Header | Source type file_info = { fname : string; @@ -744,9 +756,12 @@ let prepare_cocci ctls free_var_lists negated_pos_lists negated_pos_list),used_after_list),positions_list),rulenb) -> let is_script_rule r = - match r with Ast_cocci.ScriptRule _ -> true | _ -> false in + match r with + Ast_cocci.ScriptRule _ + | Ast_cocci.InitialScriptRule _ | Ast_cocci.FinalScriptRule _ -> true + | _ -> false in - if not (List.length ctl_toplevel_list = 1) && not (is_script_rule ast) + if not (List.length ctl_toplevel_list =|= 1) && not (is_script_rule ast) then failwith "not handling multiple minirules"; match ast with @@ -760,6 +775,30 @@ let prepare_cocci ctls free_var_lists negated_pos_lists script_code = code; } in ScriptRuleCocciInfo r + | Ast_cocci.InitialScriptRule (lang,code) -> + let mv = [] in + let deps = Ast_cocci.NoDep in + let r = + { + scr_ast_rule = (lang, mv, code); + language = lang; + scr_dependencies = deps; + scr_ruleid = rulenb; + script_code = code; + } + in InitialScriptRuleCocciInfo r + | Ast_cocci.FinalScriptRule (lang,code) -> + let mv = [] in + let deps = Ast_cocci.NoDep in + let r = + { + scr_ast_rule = (lang, mv, code); + language = lang; + scr_dependencies = deps; + scr_ruleid = rulenb; + script_code = code; + } + in FinalScriptRuleCocciInfo r | Ast_cocci.CocciRule (rulename,(dependencies,dropped_isos,z),restast,isexp,ruletype) -> CocciRuleCocciInfo ( @@ -980,7 +1019,18 @@ let prepare_c files choose_includes : file_info list = (* r(ule), c(element in C code), e(nvironment) *) -let rec apply_python_rule r cache newes e rules_that_have_matched +let merge_env new_e old_e = + List.fold_left + (function old_e -> + function (e,rules) as elem -> + let (same,diff) = List.partition (function (e1,_) -> e =*= e1) old_e in + match same with + [] -> elem :: old_e + | [(_,old_rules)] -> (e,Common.union_set rules old_rules) :: diff + | _ -> failwith "duplicate environment entries") + old_e new_e + +let apply_python_rule r cache newes e rules_that_have_matched rules_that_have_ever_matched = show_or_not_scr_rule_name r.scr_ruleid; if not(interpret_dependencies rules_that_have_matched @@ -1002,7 +1052,7 @@ let rec apply_python_rule r cache newes e rules_that_have_matched let relevant_bindings = List.filter (function ((re,rm),_) -> - List.exists (function (_,(r,m)) -> r = re && m = rm) mv) + List.exists (function (_,(r,m)) -> r =$= re && m =$= rm) mv) e in let new_cache = if List.mem relevant_bindings cache @@ -1028,7 +1078,8 @@ let rec apply_python_rule r cache newes e rules_that_have_matched else (cache, merge_env [(e, rules_that_have_matched)] newes) end -and apply_cocci_rule r rules_that_have_ever_matched es (ccs:file_info list ref) = +let rec apply_cocci_rule r rules_that_have_ever_matched es + (ccs:file_info list ref) = Common.profile_code r.rulename (fun () -> show_or_not_rule_name r.ast_rule r.ruleid; show_or_not_ctl_text r.ctl r.ast_rule r.ruleid; @@ -1144,82 +1195,7 @@ and apply_cocci_rule r rules_that_have_ever_matched es (ccs:file_info list ref) (* apply the tagged modifs and reparse *) if not !Flag.sgrep_mode2 - then ccs := rebuild_info_c_and_headers !ccs r.isexp - ) - -and merge_env new_e old_e = - List.fold_left - (function old_e -> - function (e,rules) as elem -> - let (same,diff) = List.partition (function (e1,_) -> e = e1) old_e in - match same with - [] -> elem :: old_e - | [(_,old_rules)] -> (e,Common.union_set rules old_rules) :: diff - | _ -> failwith "duplicate environment entries") - old_e new_e - -and bigloop2 rs (ccs: file_info list) = - let es = ref [(Ast_c.emptyMetavarsBinding,[])] in - let ccs = ref ccs in - let rules_that_have_ever_matched = ref [] in - - (* looping over the rules *) - rs +> List.iter (fun r -> - match r with - ScriptRuleCocciInfo r -> - if !Flag_cocci.show_ctl_text then begin - Common.pr_xxxxxxxxxxxxxxxxx (); - pr ("script: " ^ r.language); - Common.pr_xxxxxxxxxxxxxxxxx (); - - adjust_pp_with_indent (fun () -> - Format.force_newline(); - let (l,mv,code) = r.scr_ast_rule in - let deps = r.scr_dependencies in - Pretty_print_cocci.unparse - (Ast_cocci.ScriptRule (l,deps,mv,code))); - end; - - if !Flag.show_misc then print_endline "RESULT ="; - - let (_, newes) = - List.fold_left - (function (cache, newes) -> - function (e, rules_that_have_matched) -> - match r.language with - "python" -> - apply_python_rule r cache newes e rules_that_have_matched - rules_that_have_ever_matched - | "test" -> - concat_headers_and_c !ccs +> List.iter (fun (c,_) -> - if c.flow <> None - then - Printf.printf "Flow: %s\r\nFlow!\r\n%!" c.fullstring); - (cache, newes) - | _ -> - Printf.printf "Unknown language: %s\n" r.language; - (cache, newes) - ) - ([],[]) !es in - - es := newes; - | CocciRuleCocciInfo r -> - apply_cocci_rule r rules_that_have_ever_matched es ccs); - - if !Flag.sgrep_mode2 - then begin - (* sgrep can lead to code that is not parsable, but we must - * still call rebuild_info_c_and_headers to pretty print the - * action (MINUS), so that later the diff will show what was - * matched by sgrep. But we don't want the parsing error message - * hence the following flag setting. So this code propably - * will generate a NotParsedCorrectly for the matched parts - * and the very final pretty print and diff will work - *) - Flag_parsing_c.verbose_parsing := false; - ccs := rebuild_info_c_and_headers !ccs false - end; - !ccs (* return final C asts *) + then ccs := rebuild_info_c_and_headers !ccs r.isexp) and reassociate_positions free_vars negated_pos_vars envs = (* issues: isolate the bindings that are relevant to a given rule. @@ -1270,7 +1246,7 @@ and reassociate_positions free_vars negated_pos_vars envs = (function (other_non_pos,other_pos) -> (* do we want equal? or just somehow compatible? eg non_pos binds only E, but other_non_pos binds both E and E1 *) - non_pos = other_non_pos) + non_pos =*= other_non_pos) splitted_relevant in (non_pos, List.sort compare @@ -1300,12 +1276,29 @@ and combine_pos negated_pos_vars others = [] others)))) negated_pos_vars -and bigloop a b = - Common.profile_code "bigloop" (fun () -> bigloop2 a b) - - - +and process_a_generated_a_env_a_toplevel2 r env = function + [cfile] -> + let free_vars = + List.filter + (function + (rule,_) when rule =$= r.rulename -> false + | (_,"ARGS") -> false + | _ -> true) + r.free_vars in + let env_domain = List.map (function (nm,vl) -> nm) env in + let metavars = + List.filter + (function md -> + let (rl,_) = Ast_cocci.get_meta_name md in + rl =$= r.rulename) + r.metavars in + if Common.include_set free_vars env_domain + then Unparse_hrule.pp_rule metavars r.ast_rule env cfile.full_fname + | _ -> failwith "multiple files not supported" +and process_a_generated_a_env_a_toplevel rule env ccs = + Common.profile_code "process_a_ctl_a_env_a_toplevel" + (fun () -> process_a_generated_a_env_a_toplevel2 rule env ccs) (* does side effects on C ast and on Cocci info rule *) and process_a_ctl_a_env_a_toplevel2 r e c f = @@ -1355,40 +1348,105 @@ and process_a_ctl_a_env_a_toplevel a b c f= Common.profile_code "process_a_ctl_a_env_a_toplevel" (fun () -> process_a_ctl_a_env_a_toplevel2 a b c f) -and process_a_generated_a_env_a_toplevel2 r env = function - [cfile] -> - let free_vars = - List.filter - (function - (rule,_) when rule = r.rulename -> false - | (_,"ARGS") -> false - | _ -> true) - r.free_vars in - let env_domain = List.map (function (nm,vl) -> nm) env in - let metavars = - List.filter - (function md -> - let (rl,_) = Ast_cocci.get_meta_name md in - rl = r.rulename) - r.metavars in - if Common.include_set free_vars env_domain - then Unparse_hrule.pp_rule metavars r.ast_rule env cfile.full_fname - | _ -> failwith "multiple files not supported" - -and process_a_generated_a_env_a_toplevel rule env ccs = - Common.profile_code "process_a_ctl_a_env_a_toplevel" - (fun () -> process_a_generated_a_env_a_toplevel2 rule env ccs) - +let rec bigloop2 rs (ccs: file_info list) = + let es = ref [(Ast_c.emptyMetavarsBinding,[])] in + let ccs = ref ccs in + let rules_that_have_ever_matched = ref [] in + + (* looping over the rules *) + rs +> List.iter (fun r -> + match r with + InitialScriptRuleCocciInfo r | FinalScriptRuleCocciInfo r -> () + | ScriptRuleCocciInfo r -> + if !Flag_cocci.show_ctl_text then begin + Common.pr_xxxxxxxxxxxxxxxxx (); + pr ("script: " ^ r.language); + Common.pr_xxxxxxxxxxxxxxxxx (); + + adjust_pp_with_indent (fun () -> + Format.force_newline(); + let (l,mv,code) = r.scr_ast_rule in + let deps = r.scr_dependencies in + Pretty_print_cocci.unparse + (Ast_cocci.ScriptRule (l,deps,mv,code))); + end; + + if !Flag.show_misc then print_endline "RESULT ="; + + let (_, newes) = + List.fold_left + (function (cache, newes) -> + function (e, rules_that_have_matched) -> + match r.language with + "python" -> + apply_python_rule r cache newes e rules_that_have_matched + rules_that_have_ever_matched + | "test" -> + concat_headers_and_c !ccs +> List.iter (fun (c,_) -> + if c.flow <> None + then + Printf.printf "Flow: %s\r\nFlow!\r\n%!" c.fullstring); + (cache, newes) + | _ -> + Printf.printf "Unknown language: %s\n" r.language; + (cache, newes) + ) + ([],[]) !es in + + es := newes; + | CocciRuleCocciInfo r -> + apply_cocci_rule r rules_that_have_ever_matched es ccs); + + if !Flag.sgrep_mode2 + then begin + (* sgrep can lead to code that is not parsable, but we must + * still call rebuild_info_c_and_headers to pretty print the + * action (MINUS), so that later the diff will show what was + * matched by sgrep. But we don't want the parsing error message + * hence the following flag setting. So this code propably + * will generate a NotParsedCorrectly for the matched parts + * and the very final pretty print and diff will work + *) + Flag_parsing_c.verbose_parsing := false; + ccs := rebuild_info_c_and_headers !ccs false + end; + !ccs (* return final C asts *) + +let bigloop a b = + Common.profile_code "bigloop" (fun () -> bigloop2 a b) + +let initial_final_bigloop2 ty rebuild r = + if !Flag_cocci.show_ctl_text then + begin + Common.pr_xxxxxxxxxxxxxxxxx (); + pr (ty ^ ": " ^ r.language); + Common.pr_xxxxxxxxxxxxxxxxx (); + + adjust_pp_with_indent (fun () -> + Format.force_newline(); + Pretty_print_cocci.unparse(rebuild r.scr_ast_rule)); + end; + + match r.language with + "python" -> + (* include_match makes no sense in an initial or final rule, although + er have no way to prevent it *) + let _ = apply_python_rule r [] [] [] [] (ref []) in () + | _ -> + Printf.printf "Unknown language for initial/final script: %s\n" + r.language + +let initial_final_bigloop a b c = + Common.profile_code "initial_final_bigloop" + (fun () -> initial_final_bigloop2 a b c) (*****************************************************************************) -(* The main function *) +(* The main functions *) (*****************************************************************************) -let full_engine2 (coccifile, isofile) cfiles = - - show_or_not_cfiles cfiles; - show_or_not_cocci coccifile isofile; +let pre_engine2 (coccifile, isofile) = + show_or_not_cocci coccifile isofile; Pycocci.set_coccifile coccifile; let isofile = @@ -1397,88 +1455,120 @@ let full_engine2 (coccifile, isofile) cfiles = pr2 ("warning: Can't find default iso file: " ^ isofile); None end - else Some isofile - in + else Some isofile in (* useful opti when use -dir *) let (metavars,astcocci,free_var_lists,negated_pos_lists,used_after_lists, positions_lists,toks,_) = - sp_of_file coccifile isofile - in - let ctls = - Common.memoized _hctl (coccifile, isofile) (fun () -> - ctls_of_ast astcocci used_after_lists positions_lists) - in + sp_of_file coccifile isofile in + let ctls = ctls_of_ast astcocci used_after_lists positions_lists in - let contain_typedmetavar = sp_contain_typed_metavar astcocci in + g_contain_typedmetavar := sp_contain_typed_metavar astcocci; - (* optimisation allowing to launch coccinelle on all the drivers *) - if !Flag_cocci.worth_trying_opt && not (worth_trying cfiles toks) - then begin - pr2 ("not worth trying:" ^ Common.join " " cfiles); - cfiles +> List.map (fun s -> s, None) - end - else begin + check_macro_in_sp_and_adjust toks; - if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx(); - if !Flag.show_misc then pr "let's go"; - if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx(); + show_or_not_ctl_tex astcocci ctls; - g_contain_typedmetavar := contain_typedmetavar; + let cocci_infos = + prepare_cocci ctls free_var_lists negated_pos_lists + used_after_lists positions_lists metavars astcocci in - check_macro_in_sp_and_adjust toks; + let _ = + List.fold_left + (function languages -> + function + InitialScriptRuleCocciInfo(r) -> + (if List.mem r.language languages + then failwith ("double initializer found for "^r.language)); + initial_final_bigloop "initial" + (function(x,_,y) -> Ast_cocci.InitialScriptRule(x,y)) + r; + r.language::languages + | _ -> languages) + [] cocci_infos in + (cocci_infos,toks) - +let pre_engine a = + Common.profile_code "pre_engine" (fun () -> pre_engine2 a) - let cocci_infos = - prepare_cocci ctls free_var_lists negated_pos_lists - used_after_lists positions_lists metavars astcocci in - let choose_includes = - match !Flag_cocci.include_options with - Flag_cocci.I_UNSPECIFIED -> - if contain_typedmetavar - then Flag_cocci.I_NORMAL_INCLUDES - else Flag_cocci.I_NO_INCLUDES - | x -> x in - let c_infos = prepare_c cfiles choose_includes in - - show_or_not_ctl_tex astcocci ctls; - - (* ! the big loop ! *) - let c_infos' = bigloop cocci_infos c_infos in - - if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx (); - if !Flag.show_misc then pr "Finished"; - if !Flag_ctl.graphical_trace then gen_pdf_graph (); - if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx(); - - c_infos' +> List.map (fun c_or_h -> - if !(c_or_h.was_modified_once) - then begin - let outfile = Common.new_temp_file "cocci-output" ("-" ^ c_or_h.fname) - in - - if c_or_h.fkind = Header - then pr2 ("a header file was modified: " ^ c_or_h.fname); - - (* and now unparse everything *) - cfile_of_program (for_unparser c_or_h.asts) outfile; - - let show_only_minus = !Flag.sgrep_mode2 in - show_or_not_diff c_or_h.fpath outfile show_only_minus; - - (c_or_h.fpath, - if !Flag.sgrep_mode2 then None else Some outfile - ) - end - else - (c_or_h.fpath, None) - ); - end +let full_engine2 (cocci_infos,toks) cfiles = + + show_or_not_cfiles cfiles; + + (* optimisation allowing to launch coccinelle on all the drivers *) + if !Flag_cocci.worth_trying_opt && not (worth_trying cfiles toks) + then + begin + pr2 ("not worth trying:" ^ Common.join " " cfiles); + cfiles +> List.map (fun s -> s, None) + end + else + begin + + if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx(); + if !Flag.show_misc then pr "let's go"; + if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx(); + + let choose_includes = + match !Flag_cocci.include_options with + Flag_cocci.I_UNSPECIFIED -> + if !g_contain_typedmetavar + then Flag_cocci.I_NORMAL_INCLUDES + else Flag_cocci.I_NO_INCLUDES + | x -> x in + let c_infos = prepare_c cfiles choose_includes in + + (* ! the big loop ! *) + let c_infos' = bigloop cocci_infos c_infos in + + if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx (); + if !Flag.show_misc then pr "Finished"; + if !Flag.show_misc then Common.pr_xxxxxxxxxxxxxxxxx (); + if !Flag_ctl.graphical_trace then gen_pdf_graph (); + + c_infos' +> List.map (fun c_or_h -> + if !(c_or_h.was_modified_once) + then + begin + let outfile = + Common.new_temp_file "cocci-output" ("-" ^ c_or_h.fname) in + + if c_or_h.fkind =*= Header + then pr2 ("a header file was modified: " ^ c_or_h.fname); + + (* and now unparse everything *) + cfile_of_program (for_unparser c_or_h.asts) outfile; + + let show_only_minus = !Flag.sgrep_mode2 in + show_or_not_diff c_or_h.fpath outfile show_only_minus; + + (c_or_h.fpath, + if !Flag.sgrep_mode2 then None else Some outfile) + end + else (c_or_h.fpath, None)) + end let full_engine a b = Common.profile_code "full_engine" (fun () -> full_engine2 a b) +let post_engine2 (cocci_infos,_) = + let _ = + List.fold_left + (function languages -> + function + FinalScriptRuleCocciInfo(r) -> + (if List.mem r.language languages + then failwith ("double finalizer found for "^r.language)); + initial_final_bigloop "final" + (function(x,_,y) -> Ast_cocci.FinalScriptRule(x,y)) + r; + r.language::languages + | _ -> languages) + [] cocci_infos in + () + +let post_engine a = + Common.profile_code "post_engine" (fun () -> post_engine2 a) (*****************************************************************************) (* check duplicate from result of full_engine *) @@ -1495,7 +1585,7 @@ let check_duplicate_modif2 xs = | res::xs -> match res with | None -> - if not (List.for_all (fun res2 -> res2 = None) xs) + if not (List.for_all (fun res2 -> res2 =*= None) xs) then begin pr2 ("different modification result for " ^ file); None diff --git a/cocci.mli b/cocci.mli index 65934b5..c596fa7 100644 --- a/cocci.mli +++ b/cocci.mli @@ -4,13 +4,18 @@ open Common * returns a list associating to the input cfiles, and maybe header * files that was also required to be modified, the files containing the * result (in general files in /tmp). + * pre_engine does the compilation of the SmPL code and runs any initially + * scripts + * post_engine runs any finally scripts * - * This function use memoisation internally, which is useful when - * use -dir to not redo twice the same work. So take care! + * This function uses memoisation internally, which is useful when + * using -dir to not redo twice the same work. So take care! *) -val full_engine : - (filename * filename) -> filename list -> - (filename * filename option) list +type cocci_info +val pre_engine : (filename * filename) -> cocci_info +val full_engine : + cocci_info -> filename list -> (filename * filename option) list +val post_engine : cocci_info -> unit (* because of the #include "toto.c" and also because we may associate the * same C file to multiple drivers because they share code, we can diff --git a/commitmsg b/commitmsg dissimilarity index 97% index a1ea097..8117a27 100644 --- a/commitmsg +++ b/commitmsg @@ -1,3 +1,39 @@ -Release coccinelle-0.1.6a - -Bugfix. +Release coccinelle-0.1.7 + +** Language: + - initialize and finalize script code, cf demos/initial_final.cocci + +** Features: + - -iso_limit option to limit the depth of isomorphism application + - with the dir option, the include path is implicitly set to the "include" + subdirectory of the specified directory, if the option -I is not used. + - give a seed for the name of a fresh identifier + - better handling of cpp "constructed" identifiers as in a##b, that in + the futur will make it easier to match over those idents. + cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing + out the problem. A new "parsing hack hint" is also available: + YACFE_IDENT_BUILDER, cf standard.h. + +** Bugfix: + - drop excessive "optimization" in ctl generation for while and for loops + - allow . as the name of the directory + - for type inference for an assignment, take the type of the right-hand + side expression, not the type of the assigned variable + - allow for with a declartion in the first header element, as in C++ + (partial support) + - allow for matching against variable declarations that include only + storage, eg static, but no type at all. + - allow for matching against types that contain both short/long and int + - allow the type metavariable in the SmPL code "unsigned T" to match a T + that is a type consisting of more than one word, eg long int. + - -ifdef_to_if option made to process nested ifdefs + (partial support) + +** Internals: + - improve and fix installation process (usable on BSD) + - improve and fix testing process + - apply patches from Eugeniy Meshcheryakov + - reorganize the way we parse C identifiers, especially concatenated cpp + identifiers as in a##b. This may lead to some regressions as we may + not parse as much code as before. + - removed popl/ and popl09/ and popl related stuff from official distrib. diff --git a/commons/.depend b/commons/.depend deleted file mode 100644 index 5fbb959..0000000 --- a/commons/.depend +++ /dev/null @@ -1,116 +0,0 @@ -oarray.cmi: osequence.cmi ocollection.cmi -oassoc.cmi: ocollection.cmi -ocollection.cmi: objet.cmi -ograph.cmi: oset.cmi -ograph_extended.cmi: oset.cmi oassoc.cmi common.cmi -osequence.cmi: oassoc.cmi -oset.cmi: seti.cmo ocamlextra/setb.cmi ocamlextra/setPt.cmo ocollection.cmi -backtrace.cmo: common.cmi -backtrace.cmx: common.cmx -common.cmo: common.cmi -common.cmx: common.cmi -common_extra.cmo: common.cmi ocamlextra/ANSITerminal.cmi -common_extra.cmx: common.cmx ocamlextra/ANSITerminal.cmx -glimpse.cmo: common.cmi -glimpse.cmx: common.cmx -interfaces.cmo: common.cmi -interfaces.cmx: common.cmx -oarray.cmo: osequence.cmi common.cmi oarray.cmi -oarray.cmx: osequence.cmx common.cmx oarray.cmi -oassoc.cmo: ocollection.cmi common.cmi oassoc.cmi -oassoc.cmx: ocollection.cmx common.cmx oassoc.cmi -objet.cmo: common.cmi objet.cmi -objet.cmx: common.cmx objet.cmi -ocollection.cmo: objet.cmi common.cmi ocollection.cmi -ocollection.cmx: objet.cmx common.cmx ocollection.cmi -ofullcommon.cmo: ocollection/oseti.cmo ocollection/osetb.cmo oset.cmi \ - ocollection/ograph2way.cmi ograph.cmi ocollection/oassoch.cmo \ - ocollection/oassocb.cmo ocollection/oassoc_buffer.cmi oassoc.cmi \ - oarray.cmi common.cmi -ofullcommon.cmx: ocollection/oseti.cmx ocollection/osetb.cmx oset.cmx \ - ocollection/ograph2way.cmx ograph.cmx ocollection/oassoch.cmx \ - ocollection/oassocb.cmx ocollection/oassoc_buffer.cmx oassoc.cmx \ - oarray.cmx common.cmx -ograph.cmo: oset.cmi common.cmi ograph.cmi -ograph.cmx: oset.cmx common.cmx ograph.cmi -ograph_extended.cmo: ocamlextra/setb.cmi ocollection/osetb.cmo oset.cmi \ - ocollection.cmi ocollection/oassocb.cmo oassoc.cmi common.cmi \ - ograph_extended.cmi -ograph_extended.cmx: ocamlextra/setb.cmx ocollection/osetb.cmx oset.cmx \ - ocollection.cmx ocollection/oassocb.cmx oassoc.cmx common.cmx \ - ograph_extended.cmi -osequence.cmo: oassoc.cmi osequence.cmi -osequence.cmx: oassoc.cmx osequence.cmi -oset.cmo: seti.cmo ocamlextra/setb.cmi ocamlextra/setPt.cmo ocollection.cmi \ - common.cmi oset.cmi -oset.cmx: seti.cmx ocamlextra/setb.cmx ocamlextra/setPt.cmx ocollection.cmx \ - common.cmx oset.cmi -parser_combinators.cmo: common.cmi parser_combinators.cmi -parser_combinators.cmx: common.cmx parser_combinators.cmi -seti.cmo: common.cmi -seti.cmx: common.cmx -ocamlextra/ANSITerminal.cmo: ocamlextra/ANSITerminal.cmi -ocamlextra/ANSITerminal.cmx: ocamlextra/ANSITerminal.cmi -ocamlextra/dumper.cmo: ocamlextra/dumper.cmi -ocamlextra/dumper.cmx: ocamlextra/dumper.cmi -ocamlextra/dynArray.cmo: ocamlextra/enum.cmi ocamlextra/dynArray.cmi -ocamlextra/dynArray.cmx: ocamlextra/enum.cmx ocamlextra/dynArray.cmi -ocamlextra/enum.cmo: ocamlextra/enum.cmi -ocamlextra/enum.cmx: ocamlextra/enum.cmi -ocamlextra/setb.cmo: ocamlextra/setb.cmi -ocamlextra/setb.cmx: ocamlextra/setb.cmi -ocamlextra/suffix_tree.cmo: ocamlextra/suffix_tree.cmi -ocamlextra/suffix_tree.cmx: ocamlextra/suffix_tree.cmi -ocamlextra/suffix_tree_ext.cmo: ocamlextra/dynArray.cmi \ - ocamlextra/suffix_tree_ext.cmi -ocamlextra/suffix_tree_ext.cmx: ocamlextra/dynArray.cmx \ - ocamlextra/suffix_tree_ext.cmi -ocamlextra/dynArray.cmi: ocamlextra/enum.cmi -ocollection/oassoc_buffer.cmo: ocamlextra/setb.cmi ocollection/osetb.cmo \ - ocollection/oassocb.cmo oassoc.cmi common.cmi \ - ocollection/oassoc_buffer.cmi -ocollection/oassoc_buffer.cmx: ocamlextra/setb.cmx ocollection/osetb.cmx \ - ocollection/oassocb.cmx oassoc.cmx common.cmx \ - ocollection/oassoc_buffer.cmi -ocollection/oassoc_cache.cmo: ocamlextra/setb.cmi ocollection/osetb.cmo \ - ocollection/oassocb.cmo oassoc.cmi common.cmi \ - ocollection/oassoc_cache.cmi -ocollection/oassoc_cache.cmx: ocamlextra/setb.cmx ocollection/osetb.cmx \ - ocollection/oassocb.cmx oassoc.cmx common.cmx \ - ocollection/oassoc_cache.cmi -ocollection/oassocb.cmo: oassoc.cmi ocamlextra/mapb.cmo common.cmi -ocollection/oassocb.cmx: oassoc.cmx ocamlextra/mapb.cmx common.cmx -ocollection/oassocbdb.cmo: ocollection/oassoc_buffer.cmi oassoc.cmi \ - ocamlextra/dumper.cmi common.cmi ocollection/oassocbdb.cmi -ocollection/oassocbdb.cmx: ocollection/oassoc_buffer.cmx oassoc.cmx \ - ocamlextra/dumper.cmx common.cmx ocollection/oassocbdb.cmi -ocollection/oassocbdb_string.cmo: ocollection/oassoc_buffer.cmi oassoc.cmi \ - common.cmi ocollection/oassocbdb_string.cmi -ocollection/oassocbdb_string.cmx: ocollection/oassoc_buffer.cmx oassoc.cmx \ - common.cmx ocollection/oassocbdb_string.cmi -ocollection/oassocdbm.cmo: oassoc.cmi common.cmi ocollection/oassocdbm.cmi -ocollection/oassocdbm.cmx: oassoc.cmx common.cmx ocollection/oassocdbm.cmi -ocollection/oassoch.cmo: oassoc.cmi ocamlextra/dumper.cmi common.cmi -ocollection/oassoch.cmx: oassoc.cmx ocamlextra/dumper.cmx common.cmx -ocollection/oassocid.cmo: oassoc.cmi common.cmi -ocollection/oassocid.cmx: oassoc.cmx common.cmx -ocollection/ograph2way.cmo: ocamlextra/setb.cmi ocollection/osetb.cmo \ - oset.cmi ograph.cmi ocollection.cmi common.cmi ocollection/ograph2way.cmi -ocollection/ograph2way.cmx: ocamlextra/setb.cmx ocollection/osetb.cmx \ - oset.cmx ograph.cmx ocollection.cmx common.cmx ocollection/ograph2way.cmi -ocollection/osetb.cmo: ocamlextra/setb.cmi oset.cmi ocollection.cmi -ocollection/osetb.cmx: ocamlextra/setb.cmx oset.cmx ocollection.cmx -ocollection/oseth.cmo: oset.cmi common.cmi -ocollection/oseth.cmx: oset.cmx common.cmx -ocollection/oseti.cmo: seti.cmo oset.cmi ocollection.cmi -ocollection/oseti.cmx: seti.cmx oset.cmx ocollection.cmx -ocollection/osetpt.cmo: ocamlextra/setPt.cmo oset.cmi ocollection.cmi -ocollection/osetpt.cmx: ocamlextra/setPt.cmx oset.cmx ocollection.cmx -ocollection/oassoc_buffer.cmi: ocollection.cmi oassoc.cmi -ocollection/oassoc_cache.cmi: ocollection.cmi oassoc.cmi -ocollection/oassocbdb.cmi: ocollection.cmi ocollection/oassoc_buffer.cmi \ - oassoc.cmi -ocollection/oassocbdb_string.cmi: ocollection.cmi \ - ocollection/oassoc_buffer.cmi oassoc.cmi -ocollection/oassocdbm.cmi: ocollection.cmi oassoc.cmi common.cmi -ocollection/ograph2way.cmi: oset.cmi ograph.cmi diff --git a/commons/Makefile b/commons/Makefile index baba40d..4073a1f 100644 --- a/commons/Makefile +++ b/commons/Makefile @@ -1,6 +1,8 @@ ############################################################################## # Variables ############################################################################## + +# The main library -include ../Makefile.config TARGET=commons @@ -19,15 +21,15 @@ MYSRC=common.ml common_extra.ml \ glimpse.ml parser_combinators.ml # src from other authors, got from the web or caml hump -SRC=ocamlextra/dumper.ml -SRC+=ocamlextra/ANSITerminal.ml +SRC=ocamlextra/dumper.ml +SRC+=ocamlextra/ANSITerminal.ml SRC+=ocamlextra/setb.ml ocamlextra/mapb.ml # defunctorized version of standard set/map SRC+=ocamlextra/setPt.ml SRC+=$(MYSRC) SRC+=ocamlextra/enum.ml ocamlextra/dynArray.ml -SRC+=ocamlextra/suffix_tree.ml ocamlextra/suffix_tree_ext.ml +SRC+=ocamlextra/suffix_tree.ml ocamlextra/suffix_tree_ext.ml -SYSLIBS=str.cma unix.cma +SYSLIBS=str.cma unix.cma INCLUDEDIRS=ocamlextra ocollection SUBDIRS=ocamlextra ocollection @@ -36,45 +38,53 @@ SUBDIRS=ocamlextra ocollection # Other common (thin wrapper) libraries #----------------------------------------------------------------------------- +#format: XXXSRC, XXXINCLUDE, XXXSYSLIBS + #gdbm MYGDBMSRC=ocollection/oassocdbm.ml GDBMSYSLIBS=dbm.cma #berkeley db (ocamlbdb) -BDBINCLUDES=-I ../ocamlbdb MYBDBSRC=ocollection/oassocbdb.ml ocollection/oassocbdb_string.ml +BDBINCLUDES=-I ../ocamlbdb BDBSYSLIBS=bdb.cma #lablgtk (ocamlgtk) -GUIINCLUDES=-I +lablgtk2 -I +lablgtksourceview -I ../ocamlgtk/src MYGUISRC=gui.ml +GUIINCLUDES=-I +lablgtk2 -I +lablgtksourceview -I ../ocamlgtk/src GUISYSLIBS=lablgtk.cma lablgtksourceview.cma #pycaml (ocamlpython) -PYINCLUDES=-I ../ocamlpython -I ../../ocamlpython MYPYSRC=python.ml +PYINCLUDES=-I ../ocamlpython -I ../../ocamlpython PYSYSLIBS=python.cma #ocamlmpi -MPIINCLUDES=-I ../ocamlmpi -I ../../ocamlmpi -I +ocamlmpi MYMPISRC=distribution.ml +MPIINCLUDES=-I ../ocamlmpi -I ../../ocamlmpi -I +ocamlmpi MPISYSLIBS=mpi.cma - -#----------------------------------------------------------------------------- #pcre #REGEXPINCLUDES=-I +pcre -REGEXPINCLUDES=-I ../ocamlpcre/lib MYREGEXPSRC=regexp.ml +REGEXPINCLUDES=-I ../ocamlpcre/lib -I ../../ocamlpcre/lib + +#sexplib +MYSEXPSRC=sexp_common.ml +SEXPINCLUDES=-I ../ocamlsexp -I ../ocamltarzan/lib-sexp -I ../../ocamltarzan/lib-sexp +#binprot +MYBINSRC=bin_common.ml +BININCLUDES=-I ../ocamltarzan/lib-binprot -I ../../ocamltarzan/lib-binprot #----------------------------------------------------------------------------- # Other stuff #----------------------------------------------------------------------------- #backtrace -BACKTRACEINCLUDES=-I $(shell ocamlc -where) MYBACKTRACESRC=backtrace.ml +BACKTRACEINCLUDES=-I $(shell ocamlc -where) + ############################################################################## # Generic variables @@ -88,9 +98,15 @@ INCLUDES=$(INCLUDEDIRS:%=-I %) $(INCLUDESEXTRA) # This flag can also be used in subdirectories so don't change its name here. # For profiling use: -p -inline 0 -OPTFLAGS= +OPTFLAGS= #-thread +# The OPTBIN variable is here to allow to use ocamlc.opt instead of +# ocaml, when it is available, which speeds up compilation. So +# if you want the fast version of the ocaml chain tools, set this var +# or setenv it to ".opt" in your startup script. +#OPTBIN= #.opt + OCAMLCFLAGS ?= -g -dtypes # The OCaml tools. @@ -103,7 +119,7 @@ OCAMLMKTOP=ocamlmktop -g -custom $(INCLUDES) # if need C code OCAMLMKLIB=ocamlmklib -CC=gcc +CC=gcc ############################################################################## # Top rules @@ -136,7 +152,7 @@ clean:: # Other commons libs target ############################################################################## -all_libs: gdbm bdb gui mpi backtrace +all_libs: gdbm bdb gui mpi regexp backtrace #----------------------------------------------------------------------------- gdbm: commons_gdbm.cma @@ -150,9 +166,9 @@ commons_gdbm.cmxa: $(MYGDBMSRC:.ml=.cmx) #----------------------------------------------------------------------------- -bdb: +bdb: $(MAKE) INCLUDESEXTRA="$(BDBINCLUDES)" commons_bdb.cma -bdb.opt: +bdb.opt: $(MAKE) INCLUDESEXTRA="$(BDBINCLUDES)" commons_bdb.cmxa commons_bdb.cma: $(MYBDBSRC:.ml=.cmo) @@ -178,9 +194,9 @@ commons_gui.cmxa: $(MYGUISRC:.ml=.cmx) #----------------------------------------------------------------------------- -mpi: +mpi: $(MAKE) INCLUDESEXTRA="$(MPIINCLUDES)" commons_mpi.cma -mpi.opt: +mpi.opt: $(MAKE) INCLUDESEXTRA="$(MPIINCLUDES)" commons_mpi.cmxa commons_mpi.cma: $(MYMPISRC:.ml=.cmo) @@ -196,9 +212,9 @@ distribution.opt: mpi.opt #----------------------------------------------------------------------------- -python: +python: $(MAKE) INCLUDESEXTRA="$(PYINCLUDES)" commons_python.cma -python.opt: +python.opt: $(MAKE) INCLUDESEXTRA="$(PYINCLUDES)" commons_python.cmxa @@ -239,6 +255,44 @@ clean:: rm -f dllcommons_backtrace.so + +#----------------------------------------------------------------------------- +sexp: + $(MAKE) INCLUDESEXTRA="$(SEXPINCLUDES)" commons_sexp.cma +sexp.opt: + $(MAKE) INCLUDESEXTRA="$(SEXPINCLUDES)" commons_sexp.cmxa + +commons_sexp.cma: $(MYSEXPSRC:.ml=.cmo) + $(OCAMLC) -a -o $@ $^ + +commons_sexp.cmxa: $(MYSEXPSRC:.ml=.cmx) + $(OCAMLOPT) -a -o $@ $^ + +binprot: + $(MAKE) INCLUDESEXTRA="$(BININCLUDES)" commons_bin.cma +binprot.opt: + $(MAKE) INCLUDESEXTRA="$(BININCLUDES)" commons_bin.cmxa + +commons_bin.cma: $(MYBINSRC:.ml=.cmo) + $(OCAMLC) -a -o $@ $^ + +commons_bin.cmxa: $(MYBINSRC:.ml=.cmx) + $(OCAMLOPT) -a -o $@ $^ + +############################################################################## +# The global "features" lib wrapper +############################################################################## + +features: commons_features.cma +features.opt: commons_features.cmxa + +commons_features.cma: features.cmo + $(OCAMLC) -a -o $@ $^ + +commons_features.cmxa: features.cmx + $(OCAMLOPT) -a -o $@ $^ + + ############################################################################## # Developer rules ############################################################################## @@ -247,7 +301,7 @@ tags: otags -no-mli-tags -r . clean:: - rm -f gmon.out + rm -f gmon.out forprofiling: $(MAKE) OPTFLAGS="-p -inline 0 " opt @@ -278,7 +332,7 @@ dependencygraph2: clean:: rm -f *.cm[iox] *.o *.a *.cma *.cmxa *.annot - rm -f *~ .*~ #*# + rm -f *~ .*~ #*# clean:: for i in $(SUBDIRS); do (cd $$i; \ @@ -286,7 +340,7 @@ clean:: cd ..; ) \ done -depend: +depend: $(OCAMLDEP) *.mli *.ml > .depend for i in $(SUBDIRS); do $(OCAMLDEP) $$i/*.ml $$i/*.mli >> .depend; done diff --git a/commons/authors.txt b/commons/authors.txt index 985ce64..b0b4055 100644 --- a/commons/authors.txt +++ b/commons/authors.txt @@ -1,5 +1,6 @@ Yoann Padioleau -Maybe a few code was borrowed from pixel (pascal rigaux). +Maybe a few code was borrowed from Pixel (Pascal Rigaux) +and Julia Lawall may have written a few helpers. See also credits.txt. diff --git a/commons/common.ml b/commons/common.ml index d080f35..1d128a0 100644 --- a/commons/common.ml +++ b/commons/common.ml @@ -1,4 +1,6 @@ -(* Copyright (C) 1998-2009 Yoann Padioleau +(* Yoann Padioleau + * + * Copyright (C) 1998-2009 Yoann Padioleau * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -152,6 +154,7 @@ let (lines: string -> string list) = fun s -> let push2 v l = l := v :: !l +let null xs = match xs with [] -> true | _ -> false @@ -1359,6 +1362,14 @@ let (|||) a b = try a with _ -> b * let finalize f cleanup = ... *) +type error = Error of string + +(* sometimes to get help from ocaml compiler to tell me places where + * I should update, we sometimes need to change some type from pair + * to triple, hence this kind of fake type. + *) +type evotype = unit +let evoval = () (*****************************************************************************) (* Environment *) @@ -1687,6 +1698,7 @@ let (=*=) = (=) (* if really want to forbid to use '=' let (=) = (=|=) *) +let (=) () () = false @@ -1706,9 +1718,11 @@ let (=) = (=|=) (*****************************************************************************) let (==>) b1 b2 = if b1 then b2 else true (* could use too => *) -let (<=>) a b = if a = b then 0 else if a < b then -1 else 1 +(* superseded by another <=> below +let (<=>) a b = if a =*= b then 0 else if a < b then -1 else 1 +*) -let xor a b = not (a = b) +let xor a b = not (a =*= b) (*****************************************************************************) @@ -1737,7 +1751,7 @@ let string_of_chars cs = cs +> List.map (String.make 1) +> String.concat "" (*****************************************************************************) (* since 3.08, div by 0 raise Div_by_rezo, and not anymore a hardware trap :)*) -let (/!) x y = if y = 0 then (log "common.ml: div by 0"; 0) else x / y +let (/!) x y = if y =|= 0 then (log "common.ml: div by 0"; 0) else x / y (* now in prelude * let rec (do_n: int -> (unit -> unit) -> unit) = fun i f -> @@ -1767,7 +1781,7 @@ let clampf = function let square x = x *. x -let rec power x n = if n = 0 then 1 else x * power x (n-1) +let rec power x n = if n =|= 0 then 1 else x * power x (n-1) let between i min max = i > min && i < max @@ -1780,18 +1794,18 @@ let bitrange x p = let v = power 2 p in between x (-v) v (* descendant *) let (prime1: int -> int option) = fun x -> let rec prime1_aux n = - if n = 1 then None + if n =|= 1 then None else - if (x / n) * n = x then Some n else prime1_aux (n-1) - in if x = 1 then None else if x < 0 then failwith "negative" else prime1_aux (x-1) + if (x / n) * n =|= x then Some n else prime1_aux (n-1) + in if x =|= 1 then None else if x < 0 then failwith "negative" else prime1_aux (x-1) (* montant, better *) let (prime: int -> int option) = fun x -> let rec prime_aux n = - if n = x then None + if n =|= x then None else - if (x / n) * n = x then Some n else prime_aux (n+1) - in if x = 1 then None else if x < 0 then failwith "negative" else prime_aux 2 + if (x / n) * n =|= x then Some n else prime_aux (n+1) + in if x =|= 1 then None else if x < 0 then failwith "negative" else prime_aux 2 let sum xs = List.fold_left (+) 0 xs let product = List.fold_left ( * ) 1 @@ -1799,21 +1813,21 @@ let product = List.fold_left ( * ) 1 let decompose x = let rec decompose x = - if x = 1 then [] + if x =|= 1 then [] else (match prime x with | None -> [x] | Some n -> n::decompose (x / n) ) - in assert (product (decompose x) = x); decompose x + in assert (product (decompose x) =|= x); decompose x let mysquare x = x * x let sqr a = a *. a type compare = Equal | Inf | Sup -let (<=>) a b = if a = b then Equal else if a < b then Inf else Sup -let (<==>) a b = if a = b then 0 else if a < b then -1 else 1 +let (<=>) a b = if a =*= b then Equal else if a < b then Inf else Sup +let (<==>) a b = if a =*= b then 0 else if a < b then -1 else 1 type uint = int @@ -1830,15 +1844,15 @@ let int_of_base s base = 0 (List.rev (list_of_string s)) let int_of_stringbits s = int_of_base s 2 -let _ = example (int_of_stringbits "1011" = 1*8 + 1*2 + 1*1) +let _ = example (int_of_stringbits "1011" =|= 1*8 + 1*2 + 1*1) let int_of_octal s = int_of_base s 8 -let _ = example (int_of_octal "017" = 15) +let _ = example (int_of_octal "017" =|= 15) (* let int_of_hex s = int_of_base s 16, NONONONO cos 'A' - '0' does not give 10 !! *) let int_of_all s = - if String.length s >= 2 && (String.get s 0 = '0') && is_digit (String.get s 1) + if String.length s >= 2 && (String.get s 0 =<= '0') && is_digit (String.get s 1) then int_of_octal s else int_of_string s @@ -1955,7 +1969,9 @@ let tuple_of_list6 = function [a;b;c;d;e;f] -> a,b,c,d,e,f | _ -> failwith "tupl (* type 'a maybe = Just of 'a | None *) type ('a,'b) either = Left of 'a | Right of 'b + (* with sexp *) type ('a, 'b, 'c) either3 = Left3 of 'a | Middle3 of 'b | Right3 of 'c + (* with sexp *) let just = function | (Some x) -> x @@ -2116,9 +2132,9 @@ let (regexp_match: string -> string -> string) = fun s re -> let split sep s = Str.split (Str.regexp sep) s -let _ = example (split "/" "" = []) +let _ = example (split "/" "" =*= []) let join sep xs = String.concat sep xs -let _ = example (join "/" ["toto"; "titi"; "tata"] = "toto/titi/tata") +let _ = example (join "/" ["toto"; "titi"; "tata"] =$= "toto/titi/tata") (* let rec join str = function | [] -> "" @@ -2137,7 +2153,7 @@ let (split_list_regexp: string -> string list -> (string * string list) list) = else split_lr_aux (heading, x::accu) xs in split_lr_aux ("__noheading__", []) xs - +> (fun xs -> if (List.hd xs) = ("__noheading__",[]) then List.tl xs else xs) + +> (fun xs -> if (List.hd xs) =*= ("__noheading__",[]) then List.tl xs else xs) @@ -2158,7 +2174,7 @@ let all_match re s = List.rev !res let _ = example (all_match "\\(@[A-Za-z]+\\)" "ca va @Et toi @Comment" - = ["@Et";"@Comment"]) + =*= ["@Et";"@Comment"]) let global_replace_regexp re f_on_substr s = @@ -2235,17 +2251,18 @@ let quote s = "\"" ^ s ^ "\"" * haskell "section" operators *) let null_string s = - s = "" + s =$= "" let is_blank_string s = s =~ "^\\([ \t]\\)*$" (* src: lablgtk2/examples/entrycompletion.ml *) let is_string_prefix s1 s2 = - (String.length s1 <= String.length s2) && (String.sub s2 0 (String.length s1) = s1) + (String.length s1 <= String.length s2) && + (String.sub s2 0 (String.length s1) =$= s1) let plural i s = - if i=1 + if i =|= 1 then Printf.sprintf "%d %s" i s else Printf.sprintf "%d %ss" i s @@ -2307,7 +2324,7 @@ let matrix_distance s1 s2 = let m = (String.length s2) in let mat = Array.make_matrix (n+1) (m+1) 0 in let t i j = - if String.get s1 (i-1) = String.get s2 (j-1) + if String.get s1 (i-1) =<= String.get s2 (j-1) then 0 else 1 in @@ -2333,8 +2350,8 @@ let edit_distance s1 s2 = let test = edit_distance "vintner" "writers" -let _ = assert (edit_distance "winter" "winter" = 0) -let _ = assert (edit_distance "vintner" "writers" = 5) +let _ = assert (edit_distance "winter" "winter" =|= 0) +let _ = assert (edit_distance "vintner" "writers" =|= 5) (*****************************************************************************) @@ -2345,7 +2362,9 @@ let dirname = Filename.dirname let basename = Filename.basename type filename = string (* TODO could check that exist :) type sux *) + (* with sexp *) type dirname = string (* TODO could check that exist :) type sux *) + (* with sexp *) module BasicType = struct type filename = string @@ -2357,8 +2376,8 @@ let (filesuffix: filename -> string) = fun s -> let (fileprefix: filename -> string) = fun s -> (try regexp_match s "\\(.+\\)\\.\\([a-zA-Z0-9_]+\\)?$" with _ -> s) -let _ = example (filesuffix "toto.c" = "c") -let _ = example (fileprefix "toto.c" = "toto") +let _ = example (filesuffix "toto.c" =$= "c") +let _ = example (fileprefix "toto.c" =$= "toto") (* assert (s = fileprefix s ^ filesuffix s) @@ -2407,7 +2426,7 @@ let dbe_of_filename_safe file = let dbe_of_filename_nodot file = let (d,b,e) = dbe_of_filename file in - let d = if d = "." then "" else d in + let d = if d =$= "." then "" else d in d,b,e @@ -2416,7 +2435,7 @@ let dbe_of_filename_nodot file = let replace_ext file oldext newext = let (d,b,e) = dbe_of_filename file in - assert(e = oldext); + assert(e =$= oldext); filename_of_dbe (d,b,newext) @@ -2722,7 +2741,7 @@ let days_in_week_of_day day = let tm = Unix.localtime day in let wday = tm.Unix.tm_wday in - let wday = if wday = 0 then 6 else wday -1 in + let wday = if wday =|= 0 then 6 else wday -1 in let mday = tm.Unix.tm_mday in @@ -2790,7 +2809,7 @@ let rough_days_between_dates d1 d2 = let _ = example (rough_days_between_dates (DMY (Day 7, Jan, Year 1977)) - (DMY (Day 13, Jan, Year 1977)) = Days 6) + (DMY (Day 13, Jan, Year 1977)) =*= Days 6) (* because of rough days, it is a bit buggy, here it should return 1 *) (* @@ -2935,7 +2954,7 @@ let week_after : float_time -> float_time = fun d -> * (enum 0 ((String.length s) - 1) +> List.map (String.get s)) *) -let _ = example (list_of_string "abcd" = ['a';'b';'c';'d']) +let _ = example (list_of_string "abcd" =*= ['a';'b';'c';'d']) (* let rec (list_of_stream: ('a Stream.t) -> 'a list) = @@ -2954,7 +2973,7 @@ let (list_of_string: string -> char list) = let (lines_with_nl: string -> string list) = fun s -> let rec lines_aux = function | [] -> [] - | [x] -> if x = "" then [] else [x ^ "\n"] (* old: [x] *) + | [x] -> if x =$= "" then [] else [x ^ "\n"] (* old: [x] *) | x::xs -> let e = x ^ "\n" in e::lines_aux xs @@ -2990,11 +3009,11 @@ let (split_space: string -> string list) = fun s -> (* todo opti ? *) let nblines s = lines s +> List.length -let _ = example (nblines "" = 0) -let _ = example (nblines "toto" = 1) -let _ = example (nblines "toto\n" = 1) -let _ = example (nblines "toto\ntata" = 2) -let _ = example (nblines "toto\ntata\n" = 2) +let _ = example (nblines "" =|= 0) +let _ = example (nblines "toto" =|= 1) +let _ = example (nblines "toto\n" =|= 1) +let _ = example (nblines "toto\ntata" =|= 2) +let _ = example (nblines "toto\ntata\n" =|= 2) (*****************************************************************************) (* Process/Files *) @@ -3048,7 +3067,7 @@ let sleep_little () = let do_in_fork f = let pid = Unix.fork () in - if pid = 0 + if pid =|= 0 then begin (* Unix.setsid(); *) @@ -3139,7 +3158,7 @@ let lfile_exists filename = with Unix.Unix_error (Unix.ENOENT, _, _) -> false let is_directory file = - (Unix.stat file).Unix.st_kind = Unix.S_DIR + (Unix.stat file).Unix.st_kind =*= Unix.S_DIR (* src: from chailloux et al book *) @@ -3156,7 +3175,7 @@ let (readdir_to_kind_list: string -> Unix.file_kind -> string list) = +> List.filter (fun s -> try let stat = Unix.lstat (path ^ "/" ^ s) in - stat.Unix.st_kind = kind + stat.Unix.st_kind =*= kind with e -> pr2 ("EXN pb stating file: " ^ s); false @@ -3177,7 +3196,7 @@ let (readdir_to_dir_size_list: string -> (string * int) list) = fun path -> +> Array.to_list +> map_filter (fun s -> let stat = Unix.lstat (path ^ "/" ^ s) in - if stat.Unix.st_kind = Unix.S_DIR + if stat.Unix.st_kind =*= Unix.S_DIR then Some (s, stat.Unix.st_size) else None ) @@ -3229,7 +3248,7 @@ let cache_computation_robust2 in if Sys.file_exists dependencies_cache && - get_value dependencies_cache = dependencies + get_value dependencies_cache =*= dependencies then get_value file_cache else begin pr2 ("cache computation recompute " ^ file); @@ -3511,7 +3530,7 @@ let take_while p = take_until (p $ not) (* now in prelude: let rec drop n xs = ... *) -let _ = example (drop 3 [1;2;3;4] = [4]) +let _ = example (drop 3 [1;2;3;4] =*= [4]) let rec drop_while p = function | [] -> [] @@ -3520,7 +3539,7 @@ let rec drop_while p = function let rec drop_until p xs = drop_while (fun x -> not (p x)) xs -let _ = example (drop_until (fun x -> x = 3) [1;2;3;4;5] = [3;4;5]) +let _ = example (drop_until (fun x -> x =|= 3) [1;2;3;4;5] =*= [3;4;5]) let span p xs = (take_while p xs, drop_while p xs) @@ -3534,7 +3553,7 @@ let rec (span: ('a -> bool) -> 'a list -> 'a list * 'a list) = let (l1, l2) = span p xs in (x::l1, l2) else ([], x::xs) -let _ = example ((span (fun x -> x <= 3) [1;2;3;4;1;2] = ([1;2;3],[4;1;2]))) +let _ = example ((span (fun x -> x <= 3) [1;2;3;4;1;2] =*= ([1;2;3],[4;1;2]))) let rec groupBy eq l = match l with @@ -3548,7 +3567,8 @@ let rec group_by_mapped_key fkey l = | [] -> [] | x::xs -> let k = fkey x in - let (xs1,xs2) = List.partition (fun x' -> let k2 = fkey x' in k=k2) xs in + let (xs1,xs2) = List.partition (fun x' -> let k2 = fkey x' in k=*=k2) xs + in (k, (x::xs1))::(group_by_mapped_key fkey xs2) @@ -3565,7 +3585,7 @@ let (exclude_but_keep_attached: ('a -> bool) -> 'a list -> ('a * 'a list) list)= in aux_filter [] xs let _ = example - (exclude_but_keep_attached (fun x -> x = 3) [3;3;1;3;2;3;3;3] = + (exclude_but_keep_attached (fun x -> x =|= 3) [3;3;1;3;2;3;3;3] =*= [(1,[3;3]);(2,[3])]) let (group_by_post: ('a -> bool) -> 'a list -> ('a list * 'a) list * 'a list)= @@ -3583,9 +3603,19 @@ let (group_by_post: ('a -> bool) -> 'a list -> ('a list * 'a) list * 'a list)= aux_filter [] [] xs let _ = example - (group_by_post (fun x -> x = 3) [1;1;3;2;3;4;5;3;6;6;6] = + (group_by_post (fun x -> x =|= 3) [1;1;3;2;3;4;5;3;6;6;6] =*= ([([1;1],3);([2],3);[4;5],3], [6;6;6])) +let (group_by_pre: ('a -> bool) -> 'a list -> 'a list * ('a * 'a list) list)= + fun f xs -> + let xs' = List.rev xs in + let (ys, unclassified) = group_by_post f xs' in + List.rev unclassified, + ys +> List.rev +> List.map (fun (xs, x) -> x, List.rev xs ) + +let _ = example + (group_by_pre (fun x -> x =|= 3) [1;1;3;2;3;4;5;3;6;6;6] =*= + ([1;1], [(3,[2]); (3,[4;5]); (3,[6;6;6])])) let rec (split_when: ('a -> bool) -> 'a list -> 'a list * 'a * 'a list) = @@ -3597,14 +3627,15 @@ let rec (split_when: ('a -> bool) -> 'a list -> 'a list * 'a * 'a list) = else let (l1, a, l2) = split_when p xs in (x::l1, a, l2) -let _ = example (split_when (fun x -> x = 3) [1;2;3;4;1;2] = ([1;2],3,[4;1;2])) +let _ = example (split_when (fun x -> x =|= 3) + [1;2;3;4;1;2] =*= ([1;2],3,[4;1;2])) (* not so easy to come up with ... used in aComment for split_paragraph *) let rec split_gen_when_aux f acc xs = match xs with | [] -> - if acc = [] + if null acc then [] else [List.rev acc] | (x::xs) -> @@ -3613,7 +3644,7 @@ let rec split_gen_when_aux f acc xs = split_gen_when_aux f (x::acc) xs | Some (rest) -> let before = List.rev acc in - if before = [] + if null before then split_gen_when_aux f [] rest else before::split_gen_when_aux f [] rest ) @@ -3626,11 +3657,13 @@ let split_gen_when f xs = (* generate exception (Failure "tl") if there is no element satisfying p *) let rec (skip_until: ('a list -> bool) -> 'a list -> 'a list) = fun p xs -> if p xs then xs else skip_until p (List.tl xs) -let _ = example (skip_until (function 1::2::xs -> true | _ -> false) [1;3;4;1;2;4;5] = [1;2;4;5]) +let _ = example + (skip_until (function 1::2::xs -> true | _ -> false) + [1;3;4;1;2;4;5] =*= [1;2;4;5]) let rec skipfirst e = function | [] -> [] - | e'::l when e = e' -> skipfirst e l + | e'::l when e =*= e' -> skipfirst e l | l -> l @@ -3640,12 +3673,12 @@ let rec skipfirst e = function let index_list xs = - if xs = [] then [] (* enum 0 (-1) generate an exception *) + if null xs then [] (* enum 0 (-1) generate an exception *) else zip xs (enum 0 ((List.length xs) -1)) let index_list_and_total xs = let total = List.length xs in - if xs = [] then [] (* enum 0 (-1) generate an exception *) + if null xs then [] (* enum 0 (-1) generate an exception *) else zip xs (enum 0 ((List.length xs) -1)) +> List.map (fun (a,b) -> (a,b,total)) @@ -3684,7 +3717,7 @@ let _ = assert_equal (head_middle_tail [1;3]) (1, [], 3) let remove x xs = let newxs = List.filter (fun y -> y <> x) xs in - assert (List.length newxs = List.length xs - 1); + assert (List.length newxs =|= List.length xs - 1); newxs @@ -3789,7 +3822,7 @@ let rec removelast = function | e::l -> e :: removelast l let remove x = List.filter (fun y -> y != x) -let empty list = list = [] +let empty list = null list let rec inits = function @@ -3834,7 +3867,7 @@ let acc_map f l = let rec (generate: int -> 'a -> 'a list) = fun i el -> - if i = 0 then [] + if i =|= 0 then [] else el::(generate (i-1) el) let rec uniq = function @@ -3842,7 +3875,7 @@ let rec uniq = function | e::l -> if List.mem e l then uniq l else e :: uniq l let has_no_duplicate xs = - List.length xs = List.length (uniq xs) + List.length xs =|= List.length (uniq xs) let is_set_as_list = has_no_duplicate @@ -3856,7 +3889,7 @@ let rec get_duplicates xs = let rec all_assoc e = function | [] -> [] - | (e',v) :: l when e=e' -> v :: all_assoc e l + | (e',v) :: l when e=*=e' -> v :: all_assoc e l | _ :: l -> all_assoc e l let prepare_want_all_assoc l = @@ -3872,7 +3905,7 @@ let rec (return_when: ('a -> 'b option) -> 'a list -> 'b) = fun p -> function | x::xs -> (match p x with None -> return_when p xs | Some b -> b) let rec splitAt n xs = - if n = 0 then ([],xs) + if n =|= 0 then ([],xs) else (match xs with | [] -> ([],[]) @@ -3882,9 +3915,9 @@ let rec splitAt n xs = let pack n xs = let rec pack_aux l i = function | [] -> failwith "not on a boundary" - | [x] -> if i = n then [l++[x]] else failwith "not on a boundary" + | [x] -> if i =|= n then [l++[x]] else failwith "not on a boundary" | x::xs -> - if i = n + if i =|= n then (l++[x])::(pack_aux [] 1 xs) else pack_aux (l++[x]) (i+1) xs in @@ -3959,7 +3992,7 @@ let rec (get_pair: ('a list) -> (('a * 'a) list)) = function let rang elem liste = let rec rang_rec elem accu = function | [] -> raise Not_found - | a::l -> if a = elem then accu + | a::l -> if a =*= elem then accu else rang_rec elem (accu+1) l in rang_rec elem 1 liste @@ -4000,7 +4033,7 @@ let rec uncons_permut xs = indexed +> List.map (fun (x, pos) -> (x, pos), remove_elem_pos pos xs) let _ = example - (uncons_permut ['a';'b';'c'] = + (uncons_permut ['a';'b';'c'] =*= [('a', 0), ['b';'c']; ('b', 1), ['a';'c']; ('c', 2), ['a';'b'] @@ -4056,7 +4089,7 @@ let pack_sorted same xs = if same (List.hd cur) y then pack_s_aux (y::cur, rest) ys else pack_s_aux ([y], cur::rest) ys in pack_s_aux ([List.hd xs],[]) (List.tl xs) +> List.rev -let test = pack_sorted (=) [1;1;1;2;2;3;4] +let test = pack_sorted (=*=) [1;1;1;2;2;3;4] let rec keep_best f = @@ -4103,8 +4136,8 @@ let sort_by_key_highfirst xs = let sort_by_key_lowfirst xs = sort_prof (fun (k1,v1) (k2,v2) -> compare k1 k2) xs -let _ = example (sort_by_key_lowfirst [4, (); 7,()] = [4,(); 7,()]) -let _ = example (sort_by_key_highfirst [4,(); 7,()] = [7,(); 4,()]) +let _ = example (sort_by_key_lowfirst [4, (); 7,()] =*= [4,(); 7,()]) +let _ = example (sort_by_key_highfirst [4,(); 7,()] =*= [7,(); 4,()]) let sortgen_by_key_highfirst xs = @@ -4180,13 +4213,33 @@ let rec fusionneListeContenant (et1, et2) = function (* Arrays *) (*****************************************************************************) +(* do bound checking ? *) let array_find_index f a = + let rec array_find_index_ i = + if f i then i else array_find_index_ (i+1) + in + try array_find_index_ 0 with _ -> raise Not_found + +let array_find_index_via_elem f a = let rec array_find_index_ i = if f a.(i) then i else array_find_index_ (i+1) in try array_find_index_ 0 with _ -> raise Not_found + +type idx = Idx of int +let next_idx (Idx i) = (Idx (i+1)) +let int_of_idx (Idx i) = i + +let array_find_index_typed f a = + let rec array_find_index_ i = + if f i then i else array_find_index_ (next_idx i) + in + try array_find_index_ (Idx 0) with _ -> raise Not_found + + + (*****************************************************************************) (* Matrix *) (*****************************************************************************) @@ -4257,8 +4310,8 @@ let ex_columns1 = [1;4;7]; [2;5;8]; ] -let _ = example (rows_of_matrix ex_matrix1 = ex_rows1) -let _ = example (columns_of_matrix ex_matrix1 = ex_columns1) +let _ = example (rows_of_matrix ex_matrix1 =*= ex_rows1) +let _ = example (columns_of_matrix ex_matrix1 =*= ex_columns1) (*****************************************************************************) @@ -4289,6 +4342,7 @@ let bigarray_string_of_c_layout a = "<>" (* Set. Have a look too at set*.mli *) (*****************************************************************************) type 'a set = 'a list + (* with sexp *) let (empty_set: 'a set) = [] let (insert_set: 'a -> 'a set -> 'a set) = fun x xs -> @@ -4419,12 +4473,13 @@ let rec intersect x y = (* Assoc *) (*****************************************************************************) type ('a,'b) assoc = ('a * 'b) list + (* with sexp *) let (assoc_to_function: ('a, 'b) assoc -> ('a -> 'b)) = fun xs -> xs +> List.fold_left (fun acc (k, v) -> (fun k' -> - if k = k' then v else acc k' + if k =*= k' then v else acc k' )) (fun k -> failwith "no key in this assoc") (* simpler: let (assoc_to_function: ('a, 'b) assoc -> ('a -> 'b)) = fun xs -> @@ -4475,7 +4530,8 @@ let (lookup_list2: 'a -> ('a , 'b) assoc list -> ('b * int)) = fun el xxs -> with Not_found -> lookup_l_aux (i+1) xxs in lookup_l_aux 0 xxs -let _ = example (lookup_list2 "c" [["a",1;"b",2];["a",1;"b",3];["a",1;"c",7]] = (7,2)) +let _ = example + (lookup_list2 "c" [["a",1;"b",2];["a",1;"b",3];["a",1;"c",7]] =*= (7,2)) let assoc_option k l = @@ -4543,7 +4599,7 @@ let _ = let h = Hashtbl.create 101 in Hashtbl.add h "toto" 1; Hashtbl.add h "toto" 1; - assert(hash_to_list h = ["toto",1; "toto",1]) + assert(hash_to_list h =*= ["toto",1; "toto",1]) let hfind_default key value_if_not_found h = @@ -4569,6 +4625,7 @@ let hfind_option key h = (*****************************************************************************) type 'a hashset = ('a, bool) Hashtbl.t + (* with sexp *) let hash_hashset_add k e h = @@ -4654,6 +4711,7 @@ let diff_two_say_set_eff xs1 xs2 = (* Stack *) (*****************************************************************************) type 'a stack = 'a list + (* with sexp *) let (empty_stack: 'a stack) = [] let (push: 'a -> 'a stack -> 'a stack) = fun x xs -> x::xs @@ -4743,38 +4801,51 @@ let rec (tree_iter: ('a -> unit) -> 'a tree -> unit) = fun f tree -> (* N-ary tree with updatable childrens *) (*****************************************************************************) -(* Leaf can seem redundant, but sometimes want to directly see if - * a children is a leaf without looking if the list is empty. - *) -type ('a, 'b) treeref = - | NodeRef of 'a * ('a, 'b) treeref list ref - | LeafRef of 'b +(* no empty tree, must have one root at list *) + +type 'a treeref = + | NodeRef of 'a * 'a treeref list ref let treeref_children_ref tree = match tree with - | LeafRef _ -> failwith "treeref_tail: leaf" | NodeRef (n, x) -> x let rec (treeref_node_iter: - (('a * ('a, 'b) treeref list ref) -> unit) -> - ('a, 'b) treeref -> unit) = +(* (('a * ('a, 'b) treeref list ref) -> unit) -> + ('a, 'b) treeref -> unit +*) 'a) + = fun f tree -> match tree with - | LeafRef _ -> () +(* | LeafRef _ -> ()*) | NodeRef (n, xs) -> f (n, xs); !xs +> List.iter (treeref_node_iter f) +let find_treeref f tree = + let res = ref [] in + + tree +> treeref_node_iter (fun (n, xs) -> + if f (n,xs) + then push2 (n, xs) res; + ); + match !res with + | [n,xs] -> NodeRef (n, xs) + | [] -> raise Not_found + | x::y::zs -> raise Multi_found + let rec (treeref_node_iter_with_parents: - (('a * ('a, 'b) treeref list ref) -> ('a list) -> unit) -> - ('a, 'b) treeref -> unit) = + (* (('a * ('a, 'b) treeref list ref) -> ('a list) -> unit) -> + ('a, 'b) treeref -> unit) + *) 'a) + = fun f tree -> let rec aux acc tree = match tree with - | LeafRef _ -> () +(* | LeafRef _ -> ()*) | NodeRef (n, xs) -> f (n, xs) acc ; !xs +> List.iter (aux (n::acc)) @@ -4782,19 +4853,73 @@ let rec (treeref_node_iter_with_parents: aux [] tree -let find_treeref f tree = +(* ---------------------------------------------------------------------- *) +(* Leaf can seem redundant, but sometimes want to directly see if + * a children is a leaf without looking if the list is empty. + *) +type ('a, 'b) treeref2 = + | NodeRef2 of 'a * ('a, 'b) treeref2 list ref + | LeafRef2 of 'b + + +let treeref2_children_ref tree = + match tree with + | LeafRef2 _ -> failwith "treeref_tail: leaf" + | NodeRef2 (n, x) -> x + + + +let rec (treeref_node_iter2: + (('a * ('a, 'b) treeref2 list ref) -> unit) -> + ('a, 'b) treeref2 -> unit) = + fun f tree -> + match tree with + | LeafRef2 _ -> () + | NodeRef2 (n, xs) -> + f (n, xs); + !xs +> List.iter (treeref_node_iter2 f) + + +let find_treeref2 f tree = let res = ref [] in - tree +> treeref_node_iter (fun (n, xs) -> + tree +> treeref_node_iter2 (fun (n, xs) -> if f (n,xs) then push2 (n, xs) res; ); match !res with - | [n,xs] -> NodeRef (n, xs) + | [n,xs] -> NodeRef2 (n, xs) | [] -> raise Not_found | x::y::zs -> raise Multi_found + + +let rec (treeref_node_iter_with_parents2: + (('a * ('a, 'b) treeref2 list ref) -> ('a list) -> unit) -> + ('a, 'b) treeref2 -> unit) = + fun f tree -> + let rec aux acc tree = + match tree with + | LeafRef2 _ -> () + | NodeRef2 (n, xs) -> + f (n, xs) acc ; + !xs +> List.iter (aux (n::acc)) + in + aux [] tree + + + + + + + + + + + + + let find_treeref_with_parents_some f tree = let res = ref [] in @@ -4846,13 +4971,13 @@ let (add_arc: ('a * 'a) -> 'a graph -> 'a graph) = fun arc (nodes, arcs) -> (nodes, set [arc] $+$ arcs) let (del_arc: ('a * 'a) -> 'a graph -> 'a graph) = fun arc (nodes, arcs) -> - (nodes, arcs +> List.filter (fun a -> not (arc = a))) + (nodes, arcs +> List.filter (fun a -> not (arc =*= a))) let (successors: 'a -> 'a graph -> 'a set) = fun x (nodes, arcs) -> - arcs +> List.filter (fun (src, dst) -> src = x) +> List.map snd + arcs +> List.filter (fun (src, dst) -> src =*= x) +> List.map snd let (predecessors: 'a -> 'a graph -> 'a set) = fun x (nodes, arcs) -> - arcs +> List.filter (fun (src, dst) -> dst = x) +> List.map fst + arcs +> List.filter (fun (src, dst) -> dst =*= x) +> List.map fst let (nodes: 'a graph -> 'a set) = fun (nodes, arcs) -> nodes @@ -4990,10 +5115,10 @@ let big_union f xs = xs +> map f +> fold union_set empty_set let empty_list = [] let sort = List.sort let length = List.length -let null xs = match xs with [] -> true | _ -> false +(* in prelude now: let null xs = match xs with [] -> true | _ -> false *) let head = List.hd let tail = List.tl -let is_singleton = fun xs -> List.length xs = 1 +let is_singleton = fun xs -> List.length xs =|= 1 (*****************************************************************************) (* Geometry (raytracer) *) @@ -5168,6 +5293,7 @@ type parse_info = { column: int; file: filename; } + (* with sexp *) let fake_parse_info = { charpos = -1; str = ""; @@ -5196,7 +5322,7 @@ let (info_from_charpos2: int -> filename -> (int * int * string)) = let rec charpos_to_pos_aux last_valid = let s = try Some (input_line chan) - with End_of_file when charpos = last_valid -> None in + with End_of_file when charpos =|= last_valid -> None in incr linen; match s with Some s -> @@ -5322,20 +5448,18 @@ let error_message_short = fun filename (lexeme, lexstart) -> *) type score_result = Ok | Pb of string + (* with sexp *) type score = (string (* usually a filename *), score_result) Hashtbl.t + (* with sexp *) +type score_list = (string (* usually a filename *) * score_result) list + (* with sexp *) let empty_score () = (Hashtbl.create 101 : score) -let regression_testing newscore best_score_file = +let regression_testing_vs newscore bestscore = - pr2 ("regression file: "^ best_score_file); - let (bestscore : score) = - if not (Sys.file_exists best_score_file) - then write_value (empty_score()) best_score_file; - get_value best_score_file - in let newbestscore = empty_score () in let allres = @@ -5369,7 +5493,7 @@ let regression_testing newscore best_score_file = Hashtbl.add newbestscore res Ok | Pb x, Pb y -> Hashtbl.add newbestscore res (Pb x); - if not (x = y) + if not (x =$= y) then begin Printf.printf "Semipb: still error but not same error : %s\n" res; @@ -5378,29 +5502,52 @@ let regression_testing newscore best_score_file = end ) ); - write_value newbestscore (best_score_file ^ ".old"); - write_value newbestscore best_score_file; flush stdout; flush stderr; + newbestscore end +let regression_testing newscore best_score_file = + + pr2 ("regression file: "^ best_score_file); + let (bestscore : score) = + if not (Sys.file_exists best_score_file) + then write_value (empty_score()) best_score_file; + get_value best_score_file + in + let newbestscore = regression_testing_vs newscore bestscore in + write_value newbestscore (best_score_file ^ ".old"); + write_value newbestscore best_score_file; + () + + + + let string_of_score_result v = match v with | Ok -> "Ok" | Pb s -> "Pb: " ^ s -let print_score score = - score +> hash_to_list +> List.iter (fun (k, v) -> - pr2 (sprintf "% s --> %s" k (string_of_score_result v)) - ); +let total_scores score = + let total = hash_to_list score +> List.length in + let good = hash_to_list score +> List.filter + (fun (s, v) -> v =*= Ok) +> List.length in + good, total + + +let print_total_score score = pr2 "--------------------------------"; pr2 "total score"; pr2 "--------------------------------"; - let total = hash_to_list score +> List.length in - let good = hash_to_list score +> List.filter - (fun (s, v) -> v = Ok) +> List.length - in + let (good, total) = total_scores score in pr2 (sprintf "good = %d/%d" good total) +let print_score score = + score +> hash_to_list +> List.iter (fun (k, v) -> + pr2 (sprintf "% s --> %s" k (string_of_score_result v)) + ); + print_total_score score; + () + (*****************************************************************************) (* Scope managment (cocci) *) @@ -5435,7 +5582,7 @@ let rec lookup_env k env = | [] -> raise Not_found | []::zs -> lookup_env k zs | ((k',v)::xs)::zs -> - if k = k' + if k =*= k' then v else lookup_env k (xs::zs) @@ -5721,7 +5868,7 @@ let main_boilerplate f = * Common.debugger will be set in main(), so too late, so * have to be quicker *) - if Sys.argv +> Array.to_list +> List.exists (fun x -> x ="-debugger") + if Sys.argv +> Array.to_list +> List.exists (fun x -> x =$= "-debugger") then debugger := true; finalize (fun ()-> diff --git a/commons/common.mli b/commons/common.mli index d6d9b63..5bbdcfc 100644 --- a/commons/common.mli +++ b/commons/common.mli @@ -239,13 +239,18 @@ val _list_bool : (string * bool) list ref val example3 : string -> bool -> unit val test_all : unit -> unit + (* regression testing *) type score_result = Ok | Pb of string -type score = (string (* usually a filename *), score_result) Hashtbl.t +type score = (string (* usually a filename *), score_result) Hashtbl.t +type score_list = (string (* usually a filename *) * score_result) list val empty_score : unit -> score val regression_testing : score -> filename (* old score file on disk (usually in /tmp) *) -> unit +val regression_testing_vs: score -> score -> score +val total_scores : score -> int (* good *) * int (* total *) val print_score : score -> unit +val print_total_score: score -> unit (* quickcheck spirit *) @@ -463,6 +468,11 @@ val exn_to_s : exn -> string (* alias *) val string_of_exn : exn -> string +type error = Error of string + +type evotype = unit +val evoval : evotype + (*****************************************************************************) (* Environment *) (*****************************************************************************) @@ -564,7 +574,7 @@ val (=*=): 'a -> 'a -> bool (* if want to restrict the use of '=', uncomment this: * - * val (=): int -> int -> bool + * val (=): unit -> unit -> bool * * But it will not forbid you to use caml functions like List.find, List.mem * which internaly use this convenient but evolution-unfriendly (=) @@ -572,7 +582,6 @@ val (=*=): 'a -> 'a -> bool - (*###########################################################################*) (* And now basic types *) (*###########################################################################*) @@ -1168,14 +1177,15 @@ val drop_until : ('a -> bool) -> 'a list -> 'a list val span : ('a -> bool) -> 'a list -> 'a list * 'a list val skip_until : ('a list -> bool) -> 'a list -> 'a list -val skipfirst : 'a -> 'a list -> 'a list +val skipfirst : (* Eq a *) 'a -> 'a list -> 'a list (* cf also List.partition *) val fpartition : ('a -> 'b option) -> 'a list -> 'b list * 'a list val groupBy : ('a -> 'a -> bool) -> 'a list -> 'a list list val exclude_but_keep_attached: ('a -> bool) -> 'a list -> ('a * 'a list) list -val group_by_post: ('a -> bool) -> 'a list -> ('a list * 'a) list * 'a list +val group_by_post: ('a -> bool) -> 'a list -> ('a list * 'a) list * 'a list +val group_by_pre: ('a -> bool) -> 'a list -> 'a list * ('a * 'a list) list val group_by_mapped_key: ('a -> 'b) -> 'a list -> ('b * 'a list) list (* Use hash internally to not be in O(n2). If you want to use it on a @@ -1208,7 +1218,7 @@ val filter_index : (int -> 'a -> bool) -> 'a list -> 'a list val fold_left_with_index : ('a -> 'b -> int -> 'a) -> 'a -> 'b list -> 'a val nth : 'a list -> int -> 'a -val rang : 'a -> 'a list -> int +val rang : (* Eq a *) 'a -> 'a list -> int val last_n : int -> 'a list -> 'a list @@ -1279,7 +1289,7 @@ val minimum : 'a list -> 'a val min_with : ('a -> 'b) -> 'a list -> 'a val two_mins_with : ('a -> 'b) -> 'a list -> 'a * 'a -val all_assoc : 'a -> ('a * 'b) list -> 'b list +val all_assoc : (* Eq a *) 'a -> ('a * 'b) list -> 'b list val prepare_want_all_assoc : ('a * 'b) list -> ('a * 'b list) list val or_list : bool list -> bool @@ -1328,7 +1338,17 @@ val fusionneListeContenant : 'a * 'a -> 'a list list -> 'a list list (* Arrays *) (*****************************************************************************) -val array_find_index : ('a -> bool) -> 'a array -> int +val array_find_index : (int -> bool) -> 'a array -> int +val array_find_index_via_elem : ('a -> bool) -> 'a array -> int + +(* for better type checking, as sometimes when have an 'int array', can + * easily mess up the index from the value. + *) +type idx = Idx of int +val next_idx: idx -> idx +val int_of_idx: idx -> int + +val array_find_index_typed : (idx -> bool) -> 'a array -> idx (*****************************************************************************) (* Matrix *) @@ -1449,7 +1469,7 @@ module StringSet = Set.Make(struct type t = string let compare = compare end) type ('a, 'b) assoc = ('a * 'b) list -val assoc_to_function : ('a, 'b) assoc -> ('a -> 'b) +val assoc_to_function : (* Eq a *) ('a, 'b) assoc -> ('a -> 'b) val empty_assoc : ('a, 'b) assoc val fold_assoc : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a @@ -1632,22 +1652,53 @@ val tree_iter : ('a -> unit) -> 'a tree -> unit (* N-ary tree with updatable childrens *) (*****************************************************************************) -(* Leaf can seem redundant, but sometimes want to directly see if - * a children is a leaf without looking if the list is empty. - *) -type ('a, 'b) treeref = - | NodeRef of 'a * ('a, 'b) treeref list ref - | LeafRef of 'b +(* no empty tree, must have one root at least *) +type 'a treeref = + | NodeRef of 'a * 'a treeref list ref val treeref_node_iter: - (('a * ('a, 'b) treeref list ref) -> unit) -> ('a, 'b) treeref -> unit + (('a * 'a treeref list ref) -> unit) -> 'a treeref -> unit val treeref_node_iter_with_parents: - (('a * ('a, 'b) treeref list ref) -> ('a list) -> unit) -> - ('a, 'b) treeref -> unit + (('a * 'a treeref list ref) -> ('a list) -> unit) -> + 'a treeref -> unit val find_treeref: - (('a * ('a, 'b) treeref list ref) -> bool) -> - ('a, 'b) treeref -> ('a, 'b) treeref + (('a * 'a treeref list ref) -> bool) -> + 'a treeref -> 'a treeref + +val treeref_children_ref: + 'a treeref -> 'a treeref list ref + +val find_treeref_with_parents_some: + ('a * 'a treeref list ref -> 'a list -> 'c option) -> + 'a treeref -> 'c + +val find_multi_treeref_with_parents_some: + ('a * 'a treeref list ref -> 'a list -> 'c option) -> + 'a treeref -> 'c list + + +(* Leaf can seem redundant, but sometimes want to directly see if + * a children is a leaf without looking if the list is empty. + *) +type ('a, 'b) treeref2 = + | NodeRef2 of 'a * ('a, 'b) treeref2 list ref + | LeafRef2 of 'b + + +val find_treeref2: + (('a * ('a, 'b) treeref2 list ref) -> bool) -> + ('a, 'b) treeref2 -> ('a, 'b) treeref2 + +val treeref_node_iter_with_parents2: + (('a * ('a, 'b) treeref2 list ref) -> ('a list) -> unit) -> + ('a, 'b) treeref2 -> unit + +val treeref_node_iter2: + (('a * ('a, 'b) treeref2 list ref) -> unit) -> ('a, 'b) treeref2 -> unit + +(* + val treeref_children_ref: ('a, 'b) treeref -> ('a, 'b) treeref list ref @@ -1658,7 +1709,7 @@ val find_treeref_with_parents_some: val find_multi_treeref_with_parents_some: ('a * ('a, 'b) treeref list ref -> 'a list -> 'c option) -> ('a, 'b) treeref -> 'c list - +*) (*****************************************************************************) (* Graph. But have a look too at Ograph_*.mli; it's better *) @@ -1856,7 +1907,7 @@ val error_messagebis : filename -> (string * int) -> int -> string (* for example of use, see the code used in coccinelle *) type ('a, 'b) scoped_env = ('a, 'b) assoc list -val lookup_env : 'a -> ('a, 'b) scoped_env -> 'b +val lookup_env : (* Eq a *) 'a -> ('a, 'b) scoped_env -> 'b val member_env_key : 'a -> ('a, 'b) scoped_env -> bool val new_scope : ('a, 'b) scoped_env ref -> unit diff --git a/commons/features.ml.cpp b/commons/features.ml.cpp new file mode 100644 index 0000000..f7c1095 --- /dev/null +++ b/commons/features.ml.cpp @@ -0,0 +1,65 @@ +(* yes sometimes cpp is useful *) + +(* old: +note: in addition to Makefile.config, globals/config.ml is also modified +by configure +features.ml: features.ml.cpp Makefile.config + cpp -DFEATURE_GUI=$(FEATURE_GUI) \ + -DFEATURE_MPI=$(FEATURE_MPI) \ + -DFEATURE_PCRE=$(FEATURE_PCRE) \ + features.ml.cpp > features.ml + +clean:: + rm -f features.ml + +beforedepend:: features.ml + +*) + +#if FEATURE_MPI==1 + +module Distribution = struct + let under_mpirun () = + Distribution.under_mpirun() + + let mpi_main2 ?debug_mpi map_ex reduce_ex fxs = + Distribution.mpi_main2 debug_mpi map_ex reduce_ex fxs + + let mpi_adjust_argv argv = + Distribution.mpi_adjust_argv argv +end + +#else + +module Distribution = struct + let under_mpirun () = + false + + let mpi_main2 ?debug_mpi map_ex reduce_ex fxs = + let res = List.map map_ex (fxs()) in + reduce_ex res + + let mpi_adjust_argv argv = + argv +end + +#endif + + +#if FEATURE_REGEXP_PCRE==1 +#else +#endif + +#if FEATURE_BACKTRACE==1 +module Backtrace = struct + let print () = + Backtrace.print () +end +#else + +module Backtrace = struct + let print () = + print_string "no backtrace support, use configure --with-backtrace\n" +end + +#endif diff --git a/commons/ocollection/oassocb.ml b/commons/ocollection/oassocb.ml index fdbddc6..fe727ed 100644 --- a/commons/ocollection/oassocb.ml +++ b/commons/ocollection/oassocb.ml @@ -16,7 +16,7 @@ class ['a,'b] oassocb xs = method del (k,v) = {< data = Mapb.remove k data >} method mem e = raise Todo - method null = (Mapb.height data = 0) + method null = (Mapb.height data =|= 0) method assoc k = Mapb.find k data method delkey k = {< data = Mapb.remove k data >} diff --git a/commons/oset.ml b/commons/oset.ml index 064d8c4..5116627 100644 --- a/commons/oset.ml +++ b/commons/oset.ml @@ -19,14 +19,14 @@ object(o: 'o) (* is_intersect, equal, subset *) method is_subset_of: 'o -> bool = fun o2 -> - ((o2#minus o)#cardinal >= 0) && ((o#minus o2)#cardinal = 0) + ((o2#minus o)#cardinal >= 0) && ((o#minus o2)#cardinal =|= 0) method is_equal: 'o -> bool = fun o2 -> - ((o2#minus o)#cardinal = 0) && ((o#minus o2)#cardinal = 0) + ((o2#minus o)#cardinal =|= 0) && ((o#minus o2)#cardinal =|= 0) method is_singleton: bool = (* can be short circuited *) - o#length = 1 + o#length =|= 1 method cardinal: int = (* just to keep naming conventions *) o#length (* dont work: diff --git a/commons/readme.txt b/commons/readme.txt new file mode 100644 index 0000000..4478613 --- /dev/null +++ b/commons/readme.txt @@ -0,0 +1,30 @@ + +This directory builds a common.cma library and also optionally +multiple commons_xxx.cma small libraries. The reason not to just build +a single one is that some functionnalities require external libraries +(like Berkeley DB, MPI, etc) or special version of OCaml (like for the +backtrace support) and I don't want to penalize the user by forcing +him to install all those libs before being able to use some of my +common helper functions. So, common.ml and other files offer +convenient helpers that do not require to install anything. In some +case I have directly included the code of those external libs when +there are simple such as for ANSITerminal in ocamlextra/, and for +dumper.ml I have even be further by inlining its code in common.ml so +one can just do a open Common and have everything. Then if the user +wants to, he can also leverage the other commons_xxx libraries by +explicitely building them after he has installed the necessary +external files. + +For many configurable things we can use some flags in ml files, +and have some -xxx command line argument to set them or not, +but for other things flags are not enough as they will not remove +the header and linker dependencies in Makefiles. A solution is +to use cpp and pre-process many files that have such configuration +issue. Another solution is to centralize all the cpp issue in one +file, features.ml.cpp, that acts as a generic wrapper for other +librairies and depending on the configuration actually call +the external library or provide a fake empty services indicating +that the service is not present. +So you should have a ../configure that call cpp on features.ml.cpp +to set those linking-related configuration settings. + diff --git a/commons/seti.ml b/commons/seti.ml index f9ba591..8313657 100644 --- a/commons/seti.ml +++ b/commons/seti.ml @@ -46,9 +46,10 @@ let empty = [] let pack newi j = function | [] -> [Interv (newi,j)] - | (Exact z)::xs -> (Interv (newi, j))::(if newi = z then xs else (Exact z)::xs) + | (Exact z)::xs -> + (Interv (newi, j))::(if newi =|= z then xs else (Exact z)::xs) | (Interv (i', j'))::xs -> - if newi = j' + if newi =|= j' then (Interv (i', j))::xs (* merge *) else (Interv (newi, j))::(Interv (i', j'))::xs @@ -58,19 +59,19 @@ let rec (add2: int -> seti -> seti) = fun x -> function | [] -> [Exact x] | (Exact i)::xs when x > i+1 -> (Exact x)::(Exact i)::xs | (Interv (i,j)::xs) when x > j+1 -> (Exact x)::(Interv (i,j))::xs - | (Interv (i,j)::xs) when x = j+1 -> (Interv (i,x))::xs - | (Exact i)::xs when x = i+1 -> (Interv (i,x))::xs + | (Interv (i,j)::xs) when x =|= j+1 -> (Interv (i,x))::xs + | (Exact i)::xs when x =|= i+1 -> (Interv (i,x))::xs - | (Exact i)::xs when i = x -> (Exact i)::xs + | (Exact i)::xs when i =|= x -> (Exact i)::xs | (Interv (i,j)::xs) when x <= j && x >= i -> (Interv (i,j))::xs | other -> (* let _ = log "Cache miss" in *) let _ = count2 () in (match other with - | (Exact i)::xs when x = i-1 -> pack x i xs + | (Exact i)::xs when x =|= i-1 -> pack x i xs | (Exact i)::xs when x < i-1 -> (Exact i)::add x xs - | (Interv (i,j)::xs) when x = i-1 -> pack x j xs + | (Interv (i,j)::xs) when x =|= i-1 -> pack x j xs | (Interv (i,j)::xs) when x < i-1 -> (Interv (i,j))::add x xs | _ -> raise Impossible ) @@ -89,9 +90,9 @@ let intervise = function | Exact x -> Interv (x,x) | y -> y let exactize = function - | Interv (i,j) when i = j -> Exact i + | Interv (i,j) when i =|= j -> Exact i | y -> y -let exactize2 x y = if x = y then Exact x else Interv (x,y) +let exactize2 x y = if x =|= y then Exact x else Interv (x,y) let rec (remove: int -> seti -> seti) = fun x xs -> @@ -110,8 +111,8 @@ let rec (remove: int -> seti -> seti) = fun x xs -> ( let _ = assert (j > i) in (* otherwise can lead to construct seti such as [7,6] when removing 6 from [6,6] *) match () with - | _ when x = i -> [exactize2 (i+1) j] - | _ when x = j -> [exactize2 i (j-1)] + | _ when x =|= i -> [exactize2 (i+1) j] + | _ when x =|= j -> [exactize2 i (j-1)] | _ -> [exactize2 (x+1) j; exactize2 i (x-1)] ) @ zs else (Interv (i,j))::remove x zs @@ -146,7 +147,7 @@ let iter f xs = xs +> List.iter | Interv (i, j) -> for k = i to j do f k done ) -let is_empty xs = xs = [] +let is_empty xs = xs =*= [] let choose = function | [] -> failwith "not supposed to be called with empty set" | (Exact i)::xs -> i @@ -328,7 +329,7 @@ let rec debug = function let patch1 xs = List.map exactize xs let patch2 xs = xs +> List.map (fun e -> match e with - | Interv (i,j) when i > j && i = j+1 -> + | Interv (i,j) when i > j && i =|= j+1 -> let _ = pr2 (sprintf "i = %d, j = %d" i j) in Exact i | e -> e @@ -338,7 +339,7 @@ let patch3 xs = xs +> List.fold_left (fun (min,acc) e -> match e with | Exact i -> - if i = min + if i =|= min then (min, acc) else (i, (Exact i)::acc) | Interv (i,j) -> diff --git a/commons/sexp_common.ml b/commons/sexp_common.ml new file mode 100644 index 0000000..208d760 --- /dev/null +++ b/commons/sexp_common.ml @@ -0,0 +1,319 @@ +(* automatically generated by ocamltarzan *) + +open Common + +let either_of_sexp__ = + let _loc = "Xxx.either" + in + fun _of_a _of_b -> + function + | (Sexp.List (Sexp.Atom (("left" | "Left" as tag)) :: sexp_args) as + sexp) -> + (match sexp_args with + | [ v1 ] -> let v1 = _of_a v1 in Left v1 + | _ -> Conv_error.stag_incorrect_n_args _loc tag sexp) + | (Sexp.List (Sexp.Atom (("right" | "Right" as tag)) :: sexp_args) as + sexp) -> + (match sexp_args with + | [ v1 ] -> let v1 = _of_b v1 in Right v1 + | _ -> Conv_error.stag_incorrect_n_args _loc tag sexp) + | (Sexp.Atom ("left" | "Left") as sexp) -> + Conv_error.stag_takes_args _loc sexp + | (Sexp.Atom ("right" | "Right") as sexp) -> + Conv_error.stag_takes_args _loc sexp + | (Sexp.List (Sexp.List _ :: _) as sexp) -> + Conv_error.nested_list_invalid_sum _loc sexp + | (Sexp.List [] as sexp) -> Conv_error.empty_list_invalid_sum _loc sexp + | sexp -> Conv_error.unexpected_stag _loc sexp + +let either_of_sexp _of_a _of_b sexp = either_of_sexp__ _of_a _of_b sexp + +let sexp_of_either _of_a _of_b = + function + | Left v1 -> let v1 = _of_a v1 in Sexp.List [ Sexp.Atom "Left"; v1 ] + | Right v1 -> let v1 = _of_b v1 in Sexp.List [ Sexp.Atom "Right"; v1 ] + +let either3_of_sexp__ = + let _loc = "Xxx.either3" + in + fun _of_a _of_b _of_c -> + function + | (Sexp.List (Sexp.Atom (("left3" | "Left3" as tag)) :: sexp_args) as + sexp) -> + (match sexp_args with + | [ v1 ] -> let v1 = _of_a v1 in Left3 v1 + | _ -> Conv_error.stag_incorrect_n_args _loc tag sexp) + | (Sexp.List (Sexp.Atom (("middle3" | "Middle3" as tag)) :: sexp_args) + as sexp) -> + (match sexp_args with + | [ v1 ] -> let v1 = _of_b v1 in Middle3 v1 + | _ -> Conv_error.stag_incorrect_n_args _loc tag sexp) + | (Sexp.List (Sexp.Atom (("right3" | "Right3" as tag)) :: sexp_args) as + sexp) -> + (match sexp_args with + | [ v1 ] -> let v1 = _of_c v1 in Right3 v1 + | _ -> Conv_error.stag_incorrect_n_args _loc tag sexp) + | (Sexp.Atom ("left3" | "Left3") as sexp) -> + Conv_error.stag_takes_args _loc sexp + | (Sexp.Atom ("middle3" | "Middle3") as sexp) -> + Conv_error.stag_takes_args _loc sexp + | (Sexp.Atom ("right3" | "Right3") as sexp) -> + Conv_error.stag_takes_args _loc sexp + | (Sexp.List (Sexp.List _ :: _) as sexp) -> + Conv_error.nested_list_invalid_sum _loc sexp + | (Sexp.List [] as sexp) -> Conv_error.empty_list_invalid_sum _loc sexp + | sexp -> Conv_error.unexpected_stag _loc sexp + +let either3_of_sexp _of_a _of_b _of_c sexp = + either3_of_sexp__ _of_a _of_b _of_c sexp + +let sexp_of_either3 _of_a _of_b _of_c = + function + | Left3 v1 -> let v1 = _of_a v1 in Sexp.List [ Sexp.Atom "Left3"; v1 ] + | Middle3 v1 -> let v1 = _of_b v1 in Sexp.List [ Sexp.Atom "Middle3"; v1 ] + | Right3 v1 -> let v1 = _of_c v1 in Sexp.List [ Sexp.Atom "Right3"; v1 ] + +let filename_of_sexp__ = + let _loc = "Xxx.filename" in fun sexp -> Conv.string_of_sexp sexp + +let filename_of_sexp sexp = + try filename_of_sexp__ sexp + with + | Conv_error.No_variant_match ((msg, sexp)) -> Conv.of_sexp_error msg sexp + +let sexp_of_filename v = Conv.sexp_of_string v + +let dirname_of_sexp__ = + let _loc = "Xxx.dirname" in fun sexp -> Conv.string_of_sexp sexp + +let dirname_of_sexp sexp = + try dirname_of_sexp__ sexp + with + | Conv_error.No_variant_match ((msg, sexp)) -> Conv.of_sexp_error msg sexp + +let sexp_of_dirname v = Conv.sexp_of_string v + +let set_of_sexp__ = + let _loc = "Xxx.set" in fun _of_a -> Conv.list_of_sexp _of_a + +let set_of_sexp _of_a sexp = + try set_of_sexp__ _of_a sexp + with + | Conv_error.No_variant_match ((msg, sexp)) -> Conv.of_sexp_error msg sexp + +let sexp_of_set _of_a = Conv.sexp_of_list _of_a + +let assoc_of_sexp__ = + let _loc = "Xxx.assoc" + in + fun _of_a _of_b -> + Conv.list_of_sexp + (function + | Sexp.List ([ v1; v2 ]) -> + let v1 = _of_a v1 and v2 = _of_b v2 in (v1, v2) + | sexp -> Conv_error.tuple_of_size_n_expected _loc 2 sexp) + +let assoc_of_sexp _of_a _of_b sexp = + try assoc_of_sexp__ _of_a _of_b sexp + with + | Conv_error.No_variant_match ((msg, sexp)) -> Conv.of_sexp_error msg sexp + +let sexp_of_assoc _of_a _of_b = + Conv.sexp_of_list + (fun (v1, v2) -> + let v1 = _of_a v1 and v2 = _of_b v2 in Sexp.List [ v1; v2 ]) + +let hashset_of_sexp__ = + let _loc = "Xxx.hashset" + in fun _of_a -> Conv.hashtbl_of_sexp _of_a Conv.bool_of_sexp + +let hashset_of_sexp _of_a sexp = + try hashset_of_sexp__ _of_a sexp + with + | Conv_error.No_variant_match ((msg, sexp)) -> Conv.of_sexp_error msg sexp + +let sexp_of_hashset _of_a = Conv.sexp_of_hashtbl _of_a Conv.sexp_of_bool + +let stack_of_sexp__ = + let _loc = "Xxx.stack" in fun _of_a -> Conv.list_of_sexp _of_a + +let stack_of_sexp _of_a sexp = + try stack_of_sexp__ _of_a sexp + with + | Conv_error.No_variant_match ((msg, sexp)) -> Conv.of_sexp_error msg sexp + +let sexp_of_stack _of_a = Conv.sexp_of_list _of_a + +let parse_info_of_sexp__ = + let _loc = "Xxx.parse_info" + in + function + | (Sexp.List field_sexps as sexp) -> + let str_field = ref None and charpos_field = ref None + and line_field = ref None and column_field = ref None + and file_field = ref None and duplicates = ref [] + and extra = ref [] in + let rec iter = + (function + | Sexp.List ([ Sexp.Atom field_name; field_sexp ]) :: tail -> + ((match field_name with + | "str" -> + (match !str_field with + | None -> + let fvalue = Conv.string_of_sexp field_sexp + in str_field := Some fvalue + | Some _ -> duplicates := field_name :: !duplicates) + | "charpos" -> + (match !charpos_field with + | None -> + let fvalue = Conv.int_of_sexp field_sexp + in charpos_field := Some fvalue + | Some _ -> duplicates := field_name :: !duplicates) + | "line" -> + (match !line_field with + | None -> + let fvalue = Conv.int_of_sexp field_sexp + in line_field := Some fvalue + | Some _ -> duplicates := field_name :: !duplicates) + | "column" -> + (match !column_field with + | None -> + let fvalue = Conv.int_of_sexp field_sexp + in column_field := Some fvalue + | Some _ -> duplicates := field_name :: !duplicates) + | "file" -> + (match !file_field with + | None -> + let fvalue = filename_of_sexp field_sexp + in file_field := Some fvalue + | Some _ -> duplicates := field_name :: !duplicates) + | _ -> + if !Conv.record_check_extra_fields + then extra := field_name :: !extra + else ()); + iter tail) + | sexp :: _ -> Conv_error.record_only_pairs_expected _loc sexp + | [] -> ()) + in + (iter field_sexps; + if !duplicates <> [] + then Conv_error.record_duplicate_fields _loc !duplicates sexp + else + if !extra <> [] + then Conv_error.record_extra_fields _loc !extra sexp + else + (match ((!str_field), (!charpos_field), (!line_field), + (!column_field), (!file_field)) + with + | (Some str_value, Some charpos_value, Some line_value, + Some column_value, Some file_value) -> + { + str = str_value; + charpos = charpos_value; + line = line_value; + column = column_value; + file = file_value; + } + | _ -> + Conv_error.record_undefined_elements _loc sexp + [ ((!str_field = None), "str"); + ((!charpos_field = None), "charpos"); + ((!line_field = None), "line"); + ((!column_field = None), "column"); + ((!file_field = None), "file") ])) + | (Sexp.Atom _ as sexp) -> Conv_error.record_list_instead_atom _loc sexp + +let parse_info_of_sexp sexp = parse_info_of_sexp__ sexp + +let sexp_of_parse_info { + str = v_str; + charpos = v_charpos; + line = v_line; + column = v_column; + file = v_file + } = + let bnds = [] in + let arg = sexp_of_filename v_file in + let bnd = Sexp.List [ Sexp.Atom "file"; arg ] in + let bnds = bnd :: bnds in + let arg = Conv.sexp_of_int v_column in + let bnd = Sexp.List [ Sexp.Atom "column"; arg ] in + let bnds = bnd :: bnds in + let arg = Conv.sexp_of_int v_line in + let bnd = Sexp.List [ Sexp.Atom "line"; arg ] in + let bnds = bnd :: bnds in + let arg = Conv.sexp_of_int v_charpos in + let bnd = Sexp.List [ Sexp.Atom "charpos"; arg ] in + let bnds = bnd :: bnds in + let arg = Conv.sexp_of_string v_str in + let bnd = Sexp.List [ Sexp.Atom "str"; arg ] in + let bnds = bnd :: bnds in Sexp.List bnds + + + +let score_result_of_sexp__ = + let _loc = "Xxx.score_result" + in + function + | Sexp.Atom ("ok" | "Ok") -> Ok + | (Sexp.List (Sexp.Atom (("pb" | "Pb" as tag)) :: sexp_args) as sexp) -> + (match sexp_args with + | [ v1 ] -> let v1 = Conv.string_of_sexp v1 in Pb v1 + | _ -> Conv_error.stag_incorrect_n_args _loc tag sexp) + | (Sexp.List (Sexp.Atom ("ok" | "Ok") :: _) as sexp) -> + Conv_error.stag_no_args _loc sexp + | (Sexp.Atom ("pb" | "Pb") as sexp) -> + Conv_error.stag_takes_args _loc sexp + | (Sexp.List (Sexp.List _ :: _) as sexp) -> + Conv_error.nested_list_invalid_sum _loc sexp + | (Sexp.List [] as sexp) -> Conv_error.empty_list_invalid_sum _loc sexp + | sexp -> Conv_error.unexpected_stag _loc sexp + +let score_result_of_sexp sexp = score_result_of_sexp__ sexp + +let sexp_of_score_result = + function + | Ok -> Sexp.Atom "Ok" + | Pb v1 -> + let v1 = Conv.sexp_of_string v1 in Sexp.List [ Sexp.Atom "Pb"; v1 ] + +let score_of_sexp__ = + let _loc = "Xxx.score" + in + fun sexp -> + Conv.hashtbl_of_sexp Conv.string_of_sexp score_result_of_sexp sexp + +let score_of_sexp sexp = + try score_of_sexp__ sexp + with + | Conv_error.No_variant_match ((msg, sexp)) -> Conv.of_sexp_error msg sexp + +let sexp_of_score v = + Conv.sexp_of_hashtbl Conv.sexp_of_string sexp_of_score_result v + + +let score_list_of_sexp__ = + let _loc = "Xxx.score_list" + in + fun sexp -> + Conv.list_of_sexp + (function + | Sexp.List ([ v1; v2 ]) -> + let v1 = Conv.string_of_sexp v1 + and v2 = score_result_of_sexp v2 + in (v1, v2) + | sexp -> Conv_error.tuple_of_size_n_expected _loc 2 sexp) + sexp + +let score_list_of_sexp sexp = + try score_list_of_sexp__ sexp + with + | Conv_error.No_variant_match ((msg, sexp)) -> Conv.of_sexp_error msg sexp + +let sexp_of_score_list v = + Conv.sexp_of_list + (fun (v1, v2) -> + let v1 = Conv.sexp_of_string v1 + and v2 = sexp_of_score_result v2 + in Sexp.List [ v1; v2 ]) + v diff --git a/configure b/configure index 17533b9..477b780 100755 --- a/configure +++ b/configure @@ -209,7 +209,11 @@ on the $project website. !!!! All seems fine for $project. To compile $project type: - make depend; make + (make depend); make all +or alternatively, for the optimized version: + (make depend); make all.opt +If you want both, you could use: + (make depend); make world To install type: make install @@ -278,7 +282,7 @@ my $pythonprefix = $python ? "yes_" : "no_"; `cd python; ln -s ${pythonprefix}pycocci_aux.ml pycocci_aux.ml;`; `cd python; make depend`; -my $command = "perl -p -i -e 's#Not_found.\*#Not_found->\\\"$src\\\"#' globals/config.ml"; +my $command = "perl -p -e 's#Not_found.\*#Not_found->\\\"$src\\\"#' globals/config.ml.in > globals/config.ml"; `$command`; # diff --git a/credits.txt b/credits.txt index f50124c..3b7fb55 100644 --- a/credits.txt +++ b/credits.txt @@ -4,8 +4,9 @@ Thanks to - A guy from Cornell for suggesting the term "semantic patch". Thanks to - - Francois Pottier and Yann Regis-Gianas for menhir - - arty@users.sourceforge.net for pycaml + - Francois Pottier and Yann Regis-Gianas for menhir and menhirlib/ + - arty@users.sourceforge.net for pycaml/ + - Jane Street for ocamlsexp/ - Richard Jones for his dumper module, Thanks of course also to Stallman, Linus, Leroy, Knuth and their diff --git a/ctl/Makefile b/ctl/Makefile index 84b98d4..57c6dc4 100644 --- a/ctl/Makefile +++ b/ctl/Makefile @@ -33,7 +33,7 @@ INCLUDES=-I ../commons -I ../commons/ocamlextra -I ../globals #The Caml compilers. -#for warning: -w A +#for warning: -w A #for profiling: -p -inline 0 with OCAMLOPT OCAMLCFLAGS ?= -g -dtypes OCAMLC =ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES) @@ -83,9 +83,9 @@ clean:: # clean rule for others files clean:: rm -f *.cm[iox] *.o *.annot - rm -f *~ .*~ #*# + rm -f *~ .*~ #*# -depend: +depend: $(OCAMLDEP) *.mli *.ml > .depend distclean:: diff --git a/demos/initial_final.cocci b/demos/initial_final.cocci new file mode 100644 index 0000000..3b56ea8 --- /dev/null +++ b/demos/initial_final.cocci @@ -0,0 +1,20 @@ +// Options: -dir {directory} + +@initialize:python@ +counter = 0 + +@x@ +position p; +@@ + +kmalloc@p(...) + +@script:python@ +p<6v_5k&!D`KJ3{0 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

QpPr`)up6J7HB_;I$f=i*8MpU9G3St!E>% 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 diff --git a/docs/SmPL-with-grammar-ercim-evos06.pdf b/docs/SmPL-with-grammar-ercim-evos06.pdf deleted file mode 100644 index 78428e646321d7e721da265fc2027d1a1e44e9ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256889 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%0AC`s@nB(Heo1W=5WJqP!C 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

  • @%d@{+~)Mckd-Gfh}Y&IpcHTEw8 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 diff --git a/docs/grammar/cocci_syntax.pdf b/docs/grammar/cocci_syntax.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c690e60f890d42e0b1a899d4039dfda9be0e506e GIT binary patch literal 272985 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

    8Rwq<)z=w%~J=-_;@wv~NETn0Hm2~2g3 z+c+`5K|KZz_^}MeTt-J^5Z5wb{vD`_f1KKkJ_u1fOK=};2I8YO9EIU~$5AG)iUxjRrTw`l>iOq#Dn6q@Vw*6NaleB8WN(p$N6x6*4v_Gf)QGH6 ztaxH0xF!;PR{E3N12FLu4JNw5i$tZ*z$@Q;rRCzmXP>Pey*T}!6MKYl_u$d<^YbhF z30HXz@zK|3Z_n*dnCE|fvHCxseNN;%Y#x8U8J~Qy8J=LfIVQD!^5qv#o_zJ?7t`ZE htnRMzpQ}Io;eo%z?r#I)rr=;c_@{sR^4V7p{vRJoF75yT literal 0 HcmV?d00001 diff --git a/docs/grammar/cocci_syntax.tex b/docs/grammar/cocci_syntax.tex index 8dafbd9..869ab16 100644 --- a/docs/grammar/cocci_syntax.tex +++ b/docs/grammar/cocci_syntax.tex @@ -7,6 +7,7 @@ \usepackage[pdfborder={0 0 0}]{hyperref} \usepackage{listings} \usepackage[usenames,dvipsnames]{color} +\usepackage{times} \usepackage[T1]{fontenc} \usepackage{multirow} @@ -100,9 +101,9 @@ part, the grammar is written using standard notation. In some rules, however, the left-hand side is in all uppercase letters. These are macros, which take one or more grammar rule right-hand-sides as arguments. The grammar also uses some unspecified nonterminals, such -as {\sf id}, {\sf const}, etc. These refer to the sets suggested by -the name, {\em i.e.}, {\sf id} refers to the set of possible -C-language identifiers, while {\sf const} refers to the set of +as \T{id}, \T{const}, etc. These refer to the sets suggested by +the name, {\em i.e.}, \T{id} refers to the set of possible +C-language identifiers, while \T{const} refers to the set of possible C-language constants. \ifhevea A PDF version of this documentation is available at \url{http://www.emn.fr/x-info/coccinelle/docs/cocci_syntax.pdf}.\else @@ -127,16 +128,21 @@ A HTML version of this documentation is available online at \RULE{\rt{changeset}} \CASE{\NT{metavariables} \NT{transformation}} + \CASE{\NT{script\_metavariables} \T{script\_code}} % \CASE{\NT{metavariables} \ANY{--- filename +++ filename} \NT{transformation}} - \end{grammar} +\noindent +\T{script\_code} is any code in the chosen scripting language. Parsing of +the semantic patch does not check the validity of this code; any errors are +first detected when the code is executed. + % Between the metavariables and the transformation rule, there can be a % specification of constraints on the names of the old and new files, % analogous to the filename specifications in the standard patch syntax. % (see Figure \ref{scsiglue_patch}). -\section{Metavariables} +\section{Metavariables for transformations} The \NT{rulename} portion of the metavariable declaration can specify properties of a rule such as its name, the names of the rules that it @@ -160,6 +166,10 @@ section. \opt{\NT{disable-iso}} \opt{\NT{exists}} \opt{expression}} \CASE{script:\T{language} \OPT{depends on \NT{dep}}} + \RULE{\rt{script\_init\_final}} + \CASE{initialize:\T{language}} + \CASE{finalize:\T{language}} + \RULE{\rt{dep}} \CASE{\NT{pnrule}} \CASE{\NT{dep} \&\& \NT{dep}} @@ -187,7 +197,7 @@ section. \CASE{\NT{elem} \ANY{, \NT{elem}}} \end{grammar} -The keyword \NT{disable-iso} is normally used with the names of +The keyword \KW{disable} is normally used with the names of isomorphisms defined in standard.iso or whatever isomorphism file has been included. There are, however, some other isomorphisms that are built into the implementation of Coccinelle and that can be disabled as well. Their @@ -291,6 +301,36 @@ The \NT{ctype} and \NT{ctypes} nonterminals are used by both the grammar of metavariable declarations and the grammar of transformations, and are defined on page~\pageref{types}. +\section{Metavariables for scripts} + +Metavariables for scripts can only be inherited from transformation rules. +In the spirit of scripting languages such as Python that use dynamic +typing, metavariables for scripts do not include type declarations. + +\begin{grammar} + \RULE{\rt{script\_metavariables}} + \CASE{@ script:\NT{language} \OPT{depends on \NT{dep}} @ + \any{\NT{script\_metadecl}} @@} + \CASE{@ initialize:\NT{language} @} + \CASE{@ finalize:\NT{language} @} + + \RULE{\rt{language}} \CASE{python} + + \RULE{\rt{script\_metadecl}} \CASE{\T{id} <{}< \T{rulename\_id}.\T{id} ;} +\end{grammar} + +Currently, the only scripting language that is supported is Python. The +set of available scripting languages may be extended at some point. + +Script rules declared with \KW{initialize} are run before the treatment of +any file. Script rules declared with \KW{finalize} are run when the +treatment of all of the files has completed. There can be at most one of +each per scripting language (thus currently at most one of each). +Initialize and finalize script rules do not have access to SmPL +metavariables. Nevertheless, a finalize script rule can access any +variables initialized by the other script rules, allowing information to be +transmitted from the matching process to the finalize rule. + \section{Transformation} The transformation specification essentially has the form of C code, diff --git a/docs/grammar/grammar.tex b/docs/grammar/grammar.tex index c16b836..1450a72 100644 --- a/docs/grammar/grammar.tex +++ b/docs/grammar/grammar.tex @@ -3,7 +3,7 @@ \ifhevea % Definition for Hevea (HTML generation) -\def\T#1{{\sf #1}} +\def\T#1{{\sf{#1}}} \def\NTS#1{{\maroon #1\/}} \def\KW#1{{\blue #1}} \def\gramor{{\black $|$}} @@ -17,7 +17,7 @@ \def\etoile{{\black *}} \else % Definition for LaTeX -\def\T#1{{\sf #1}} +\def\T#1{{\textsf{\small{#1}}}} \def\NTS#1{{\it #1\/}} \def\KW#1{{\mtt{#1}}} %\def\gramor{$\vert$} diff --git a/docs/options.pdf b/docs/options.pdf index 95eb81ae38beb80a9d8dc1d18c843f91ff2658c9..7184f64dc37510ca81d13797046aae3a246a4600 100644 GIT binary patch delta 33988 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 M1S%>?B`Jje2WJ00nE(I) delta 33446 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

    }eEz};MJ_05_p;WE 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 aaW!&w^>j8fM+AX@Y@CQxRALI^i2nzrzv%M- diff --git a/docs/options.tex b/docs/options.tex index 85e3fad..3b18077 100644 --- a/docs/options.tex +++ b/docs/options.tex @@ -101,6 +101,12 @@ place of the standard one. Normally one should use the {\tt using} construct within a semantic patch to specify isomorphisms to be used {\em in addition to} the standard ones.} +\rare{-iso\_limit $\langle$int$\rangle$} Limit the depth of application of +isomorphisms to the specified integer. + +\rare{-no\_iso\_limit} Put no limit on the number of times that +isomorphisms can be applied. This is the default. + \developer{-track\_iso}{ Gather information about isomorphism usage.} \developer{-profile\_iso}{ Gather information about the time required for @@ -182,7 +188,10 @@ semantic patch rule is applied to all functions in all files, etc. If a directory is specified then no files may be specified and only the rightmost directory specified is used. -\minimum{-dir}{ Specify a directory containing C files to process.} +\minimum{-dir}{ Specify a directory containing C files to process. By + default, the include path will be set to the ``include'' subdirectory of + this directory. A different include path can be specified using the + option {\bf -I}.} \normal{-include\_headers}{ This option causes header files to be processed independently. This option only makes sense if a directory is specified diff --git a/docs/semantic-patches-for-collateral-evolutions.ppt b/docs/semantic-patches-for-collateral-evolutions.ppt deleted file mode 100644 index 8a58ebbb6cf32f7c207b8f13770b237c21574948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664576 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.t2y#*8ZR;u>`FyM>G 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

    Egx{WtvM&<)x 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≀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%0A)k2a)i6UD;Q{yB)o_M zZxztK$ws4>t`=4(VjhLKPg4jaUm>exo`43M(c$h^j&Ym?!_pJ6lf;pg0gjlu4C7SGPG z5pcN}Jf^@FE^!Sw_hLI4A@gtr<@$1okX7XLXE)>H4wbA5=z!OdZj*{IN$siN-uTJ_ zJ<{dB90QU_;b=&Q=W(e>+B88bD57(;g3EG!sQ{l*HeVE@54;2E0#})8WYiZ}OS2N7 z{eHq}EyXG@T_QY&%cwkQQoWg^{_KocDUd&Y6R=e=-H27~fnbD(2*e7BgIw$dODxCD zR~Z}1_a!_8cOx7!8c^ZEb%P|R`d;?gkNoq71B!`t_*4Te%t;2BBr4_8ZO=QVkj*a& zKxINXmC=;o;B=f+XrwA8?V>7?6qeqcTOgI1YiKZBYLZ~y!^bIr(4;E)pQBz7qAC$ktks<^!!T-!VLQ|2wUF4eQN?GU>WrpljVyVScOnTlQ|&`b+zq3CwcPAzzMo3 z;5=+Tu=BX8hW89m-TCV zT3%<5F@lGO=U|NM#-GiG$>1#4>(u-Q`4bG1`8=jnxNJJ4Q}3HJg4N1L6>LD@Fg$Ki zjXMB=Fd=Y3zv`OI2rvUmunr&DfixVUOf3Kz2c0xRs8D=Fbj$G;8T~3bMJlYZ^Mc?K zdKNkU0PSKH3o-)mKMwTP9p|}`v4sz~LjmeBUk!0~@Mpom`jgj58l(<5!34rR;q5S3 z5E?yObq4jmZ_5lrD_L9429qxY_r`H#xtTV@{mG{}LLeOgu?uC!UN_|421aH9U-Vby zk!VN32LmseK8a3Y5-gZfia>kU7+{9BF$go}x7HDd0!5HFyJvKbiUzv|jB7*y^VzJ) z?z+PgHph>(u2Cj-i2=V1CI?LAVHS^rsE6HrhnXd$?!>KTTd`m_sN(u*GW1%AlsGoU z+2%O6#Zfm1&+6_n+JZ($<2QE2@^dXfT#kN06lyI2tI}%X9Rk)MLnp&R9qM9KrI@{6 z%asUq9b`U{x)Ck|;s@el1|-U_?H}ad_c6^Qoae7`lz`xP%f#-57mzo!P$Ndjx*Q`{ zrt^%IB+qRB^g=4NRO)yZXb;V zaq{=yO?U`FWoa#M9XtI94CvVFZ6obkdbg1>0o{_Y@i94 ztS*IPHbcc3;lCn_l+B1SCXpmz!-Swtq;tjt&m)J~9D{|h9NvqasKK88k)dgJK)JcB>#M;?g}yO>X+A8@iT{-lN#_ zCVfDpxJ2{t-+R5A&$6PaWd*^l!}lL%YD-TYh-qznJm35$tXNS~91hfLld>&~dHp=0 z{jhctl-x&NiF$P^eQ6aPD5wx33p}Ejjl0TP%U@H{oZpdSVL^bv9|3S60Kj7lApoFk zs9!+XMb+~6EC7`}l$NctHem>*+VtBVcZ}4M=wOH`luGCQ(Ktv_$&m3m1d~36yn>~z z5O88?`K))i%Sc2Ex`AV0$B+i(!MCsC;6#M$ieasrQ=6QKBj+BD<~C!;wV-C!^i(@C zSbXH0jie-kZeL_)6svK{7;+AcLELEbC3`|e@kG4O^GtzHBap`2z+ zu*a66ULZHy}+?H=XCxSn?zB z(w%EgOGog06_85-^Ga;Q*8yqbv`ZEedb%KCcwhrDX3j8>G{~_5-|3i%_^Ak*5SgJs zXF{)m;olhRUM{#0#M#S)NVVIN${7nqF7}_C*9-^!5uhBBhVVm|!X6@&>eO#A$(kq|N%4S2E+!VGs0G$4cYl{5b(nB&J}02ZFz2 z{!9JOkuQ6Dq~)qf4xo?R+#*3jLM7!wS4r?`$tG3ItfxdWiCX6k7c5|}K|V_H32cq4 zZVC%z9uo<$vO?aI<jP^`uXq;XyWh&;nU;=nB`TrNyG5K==9)JhL0czgWY zd0zyBdM5m1qdh$|&B~lGi{yN7w=*TLngT(yg_)M5ENY!;k!E2mTiv)K0+GMiSFEIf z=mfxs4mQCUiR)3_pd6`+nTBF8L~5z=)s-j_OOxibHJGf<&0kZ+6wA1FQ-p&QBDE)j zkPp6LvnF`(2oh>dRPLy=?NI)Rd<-bYi*CmQP;6SwucCrgPJLc%7%me9xm={Pw9Qnk zan?gY(+69~;LzgGoK&FhIp)`c^HGU`8tGYwnk17Ks=5Ib5rm6Jj>iC@adWf-U&j>M zTRltvfVw~Xkng-9@NIxd)lO4VW0=O9befr^0O2QUHoFh{Aa z`b?t+M4iqCAMh3gY)IdyR7NCgJ3@hFk|q^nqoA}uZs-JOBnRfWK;tzl;D~Pnz#2V_ zp(cG05&6X8cI<#KxbcY1Uo0PiXO|2VMRp{M3!s@rfem^9&?!|`RkZXBwn*c}z-$CQ zP)<@j6hFiVGdTb~&Hj>H3kA$pGdTXBNEb7$bZOvvz?jUEly5y^TN9RIjFy8qqua2= zo58UMKgfhR@eP56+y%QOG6jLv z-~BPfl1a%dxox7qjFO7VNYJ9`EpWVm^*%z_+Z3FF>0lh+AtD)B%X1yX)V8Tgv2k<5 z{0FcG#iR&)_}7HJba~n0k-`zYpbdeik;Z}cwRw2X;7$x~GIWdsE(zEu!1eb$5-dj` zb5Vmj#8kX&`kr6bV-NZBiQMB+l9%8GRx|@(*OHQ$F3njXi~yNZS{Lq%>!Fgw^3eB zO#L~=0^QeRfD`|SQ?uR@ho5Xd_)d$VaIx%AG6}@Ql#iVfP}K)=q>$tGfJv!8XbsXh zgiNX-*TlW2A}|$h=uVn9d_K9npj?f41bN~QF2DmAR6|(em2S%+z6z{vD~U`x0ac(6 zu|?zn!IT*fRNU@BV^ydn{i@m@KC&Vf$HO1wL~4!M!NWFL+?%2~z`$-yMFI*_3*eD{ zj$5BnuGs{vK~PBAWrq$t8HeREa7M4CFwe0GArQoI7Og>8ya1J@PcviT(nc52mo(^g zOJvg+G-cD|i5w-1T*<5d^WLHLSt%ob2-u+$y>}j~QZ57>VfFRMZ>v6Cf<@zl zMGIp9K0&I0)lfyBY_z%dOm#pE`hgdCi!OKtA=S$tcaX8i^M^Dh5YP^X|D=yS%ChED0x7)F3-upue5$2-#P1HNm8LVH`m@sMdjBgchcd z{@`UAtsD*B=n&q3-l<5`IO16m1cNb>%C9yRZg9I7*6&rV-TR zg6RP$0$~|tAaGzOU5-Wng8|U~dCvUvb@|^9XM8<;bUOJPkdwY@z`61Pt?_*Rwt__P z5PnC~sSzk3cYf?uu^xzx{B%U<9LTQ$Eyb4=**>sIWX~F+e=x^T4*Io^Has>8qI-<9 zb`v-dv*OEtSQ}BGB4b!vunA72o=+c$PU;fPqKsEHGmdlGN@Eo6M-)Xs8Rw=s5?f&} z@ToMS6QDT6DghaByG(xUD8V7>x#MS*yNJ9e9X)P(uG;gFzkpTG^MD9scO^7O>T+D} zf|7_|8PEelw(AZ$JT#eOVDg#6b2&xTufGaIX*4atAw(MKp=?88l|W=qs}V! z+LyLTm6m)5$m&+cZ`YJ_jqXE!e$Xme{dH`pSwkjHSU?{KRN!2WqlJ57m%+|AClGWJ zz-(Pp*z$YLnGG0q$F4N9INJ=6TwU6r&}$yS#f?VjmR`u?_-JLR{0|fy{)LH~6(~pYjlS+3VACiQf|KKI z!bCxrup@p3Aju*|hxB%BF1EfA)A%j%t`i746=uf#s|KbB77uc*Y zHHw4>_OwbgpUwgY*B~N5{vDLS6?y7?3nyzubJ6A%Gg^{+_X#!|c}m)cidc~#asn@; z(i{kiB9T2{UXv=<*sR37WZagNN2Mk+$06#&*|F%`x`}`b7JR|6z=>M(-UgeoFVy5vRfe?2xhvtT+RjY_kCivNOMZ-ZDXC3WgGF9Pl{;c_c77MDdOw zDRk7~EH21FB)3&@I`gTJFmO6(8Yn-j0uALE!Zt<|KjS#jZk|af^Bx#f&U)aWIdA#LSsPw zManIjWaP-3!!4ec9jtnQFuG~a_6kLB+pm$U*NsL+_%hT=qBapQFweTUq1@>nU|x{Y zt%G%E38I_KrB;lctZ$!ZsIEp_YIbP94hBf?A+BvlGmubuju)c{5YP(uJB zA_CYRfG;E*Ee;HzAYTMngs0Y?1URHfZoSMa0aJ_sO{Jz4Z5R`sH@I@jj)lrdX{K#{ z6??3R6H%YsY0$t(6y8Dp7MbhP{aQ!VwCjTi*P?pOQ@!6PjEe^xS~WV1BQP`*wPlZF zlK6-;65cA9JOwAx(7@880>;`wsdkujp2K7~JeJi9ewcG*^AJ-iaTCs+8!oskuG?E@ z(#Sr98xm9tYd2|ma4&9h>A>o!7zPntfP5$d86=Dlg?l^9!c;+<#sA;KhhFGRSqF1g#?^Rx_N26X%0 z6psvj%U1Q|LyCRj67q1jb~VWUX_oEzW{ZRAbC?n&HW+ZDM2_7`Wwpyga}oOC(+;f3 z{1tRe2uQXiH)jJ!Y$(=@^DR_<5`6Ow>=C?ess{ik(E}pnS!mE_B6F6&vW9YGi+K}7 zO6o+8JO94%jZt7@X`i@om1N!&b!O6~_@n97so1y1P!j5i(kN;J>{f&p5H3gK9!m;R z%Rrs)fsZLqLF~y({YQv?njH9@)>|O3HEpZJv-p$oO-{tvXF|n5?v!&&!ogd?L*>;B z76yg)O;oWFFo9o~!!j?-T}H4#r8T3FK_5n|N`i^qLN%)?kyGE=^6*y3*@HZ$3TXZ> zhy+x(9I#6QS2+?t_-3iYEevr_`4uXQI3J6ucN|ZT)44n_SuT+zm4>B@^;2Cj8%u#6 zp!(T|)rgg-tulc@ePZ1rD@Bq`l-nYjAsV`e3Shw~nX9jwpW^3i$OT3lNP;WBOU~jY z*MBlh`+&|!DTr*L+RKH^Blt(`QYSH6)@(=j0}KLe`b82$OBXVKl9t+2aJHa7(OPPM z5^yuTl9Z9hHFoRtDjXHG1u+yN5guIdn;Wo&F^ak5TU)%t)@ju2Xyf5 zk)5?!3G#z??=X-hWhGa-B@gLxk+K~rh&UE7`#ZmK_BBIPP1M^HQ0MJb-a8CP4a#P( z3)nm$Ifbq9Y5IyQW-rl(a03d@UK2X)s5YlCyzNuzj&ZI;Fg`>c5@N+AEErMPT;jg6 zNc13VF!9+8 z^4c^C?}Q8!fr@`=U?%0r2)PC`lDP-VUz~wk(PtQe$jiV?q=14L$tm2?W9eG$HxsUz1QiJ?(?^lf9AW z+F)Is#qs4c7w$yD@m%8XGkX8C1Op$^;L~d7l#GrCeBpTatU*>-z`w;MoeF0bc?KNP zAh-sz6ABB@C!9W9FKpcvR2}-qV6qV*^GqL61n3YsUo$^kD-+EAM7Y42UTI;nL5fh4 zvgR82pfXVM2n!*Pvt$!J7f7v&AwvwXZ<{Qs2+0s-1i}1`5SRtkwn1#+@-3_T0yAU2qbHls_@nP7J=>}E#5Vr(495}o;VX-nQ(0w*4$(1bNbF!baJs>K3vOSWSM9w$H3zfz=LcUhG_^{9ldzN(1jbWA3gc2dNWA^XT0N5DTod+E=Xow@DDJzq1Rn@0qPws zRV~Y{WPOIAVpRikkA-OKaf`1z^{&>6LWRO#rg-gSS16r}+)Paha?EJo)?c#H&3=jP z1~eB(;Mjul-|3&+#y+)V3JHp5p6=fEQmjF2pcw#zw-87Wz;t|t5)*_Ga2&3J=P5v- z_Jl4VV&NbmSEHbZBwn5f%w~dCaSEX|prDl3AS%n!=t^oX@q^H(%6}AIk|a# zBI2w)P2Lkk19tC(+at*veH+PQZ+QT+$=(<|lDGG~*lCmm<~x8u6H`h+Et+7<17(bG z%u(XB64`wff0M$I7f710Qfa6Mcm4$5kyjBzCa^*gSE`wEN8z%DB86Lp1*jZQ)$8@+ zb&ByPRxp-BbkH$6lt3a)1tWMPIGkbu;r3CE&5A;I+hyg;FNAQE3S&7Fh=3;_HzC4- z>++H=dWk)$z@8iSGp{+}0i{~~`O~XaI_tHOzDSfDp>GCGjp2%9^_aE;3{ZvqFa+?F zb5`j~V4*+u_f1Q}W#sv&bI~p&kzhhx`a=~1CIkw6?v>5pC|q8ACm_vp8gNhm*PJ&I$b-n5bY4aI~YgvMc1is7X=(#r{4UU?bGoPk=_GmLmjHB3|warvKWPe926J%2xcwE;YJ|ORQ zh&L}KBiwS(aYlq22~>)$@JR44YpEX53JelN(AucsMU5V#AvqH{I{NdvRbznesz_pn zkhj>QK;U4A_WZ#_g9<)nD^Rp{aGd5ogI2;Df1FB}F}I*{hBp`9S@x_-f@TcVT1dc{ z$zn$#SQ{`v3ylM`#a&ZZ5wBsHa0x&DwP8`k_F|Bn=?$FJH@h?wL=ak zKQ^B8{)q1&jcb&t@k>hzlmPl1WQB>UXt6QtwaAQ}trC$ctK>#4uHzGj>nrOOb54$$#wsHt!#waIGIb@eq9u=l!6@Xp zaTmxENSz#KVUYEm!XQXqit=Gu6QqzRXkohQS>CMNPPwE4z-7&E5({qklATi<+S6em ztpsXz=1Rwc5Fy%uu-u~{-uqnlae+D@CmAl*X53_l>`l2JrTMH^wEWb#!5s4 zu&S|Au3=9m!I7vY&<&iIb1JsFX2eLCSJlVz01|$t;uu8{O0kaRR=ad;T$7| z$tH`@soA8p)(B(x`DC+XxdnVVPc2#N!Wcub{|*ydkTw^Vkro4#+6#O2;e6v__SACu zxI$HE|Km4jI|!cuuZjlP}-6BMeX?0~3PLk8vJIj9sz>L6q zojnc~lrtW})a_Mdz27p_wn!UU`4^4(U73#cec)X~x@iviejTFE0-j$aj}I?{E=F_p zr4c=wBY(vUcbo@JrrQnf1RkCJSpXnT+=1Pks|TOJgM1w`QJ_!fB|;qsjcVX$BMAF^ z->gPhI0t}%kToT|3S(^(0fC2ZNZ(;Lku$}VkwNe;M~#xeJa5j;lG^&HOH5X44e73r zEgJx|5Y2FG0tA$&u(BGPC7H8G$9<$G*o=U-qBKxPaUwonYg2iGNyaI5&GZTas&EGy z#vr70toBhScDUWbCmp{YxFJv+Q+2XUB0pQCw=EeGKljhW41juLNWsSmhc$ykY#a>G zi>!<7n3Fn7s@(Xw8#5r23zCQOm&4648(dR19mU=&Oh!r4hw{= zWPsFm$uA7#LXn9y0VF|J?dL{!J037Y>`coy)W~oImfcPu`g4Qc#Rl6SD1O901sS~y z(l`y=N}Ztqad=uv!YK~#Z7&f46sMq>FJWMJX$0ZQG%Q$A^W%>i?t~Qw?dQaQ0pA); zG8n_Br8Ac$WdULycJ%Pgf?AQm3|8nVCWbr$g4mOkMeQgc{^$=Vp&5+jr3oZpRA)dc zTv3sf>B@ij1Li`64pXrKm%~D!#f&65g&7b_pjSZ93%4QO)Ejw-S=mQ@{$$;`8D!=X zYmf|dXanq2G)K4)_%c*eJ5*BF)?f{6O2mbzwdD{Ge)wWprWz|~nqwOoM-`TwDmuvX z?S~(1bWvwDh8?Q(&m6W-^AcytM$MG}wu5B$bj{nWK}@qCa1!BEO!H_7z`TU+ z$=O7Dytu9EsVTz95r_|nCJG*uJ&9*ZVjDqlUtFVqoPYu8@{Yj^bqNy~>aC^!jhH@r3l}$_g zji5D%9ZM;kvVt5KTV-*11EQ}6woGaJgw3SRv6I=;~yKeC{J5%3CIV@@@^2e z?EN6Zlbo(t>T}b6$7F)g?b;cg>407Ghl57%M~WHm>t1Q-o0ySvD4~R64 zfMC!5VTk+1q}ReREQ`YZ4o9^GT?(pX6Tm=xt+)Z{SdP|LZol3GRQg!wF(y8$rht$W ztjjXv{rmC`0ZZb&x!yY7c$XeBOtFJso;T-%Ei6DIQJGS}QLfE-h5rz@>#05kw`d;# z?#Mwk%lc?&mkVAlO1K>o`U?$!X#`7Pz{nULoq+TVx8Y@D0jf9b zxunP7A#a6(#?Mxw1I{dv9frk_;fAi#r!4FTy<0oUW6->1%zSb?kN}c*Cddcs8I5Gw z1eFU(7=&lfzKoZ8{F2@82l~+7k?Fo{maH!A33%v!<@TB;Kc~th(9{%Gw}$WJmF8&B zB(_PZX&}b#+q0HEE^hnH950x}!*x z>kUbYlRy^r{N1cy)q8htxOyLTL zb2rv6mnMIF4CT2bIHTUria`wfU~n*utel~~_;A&g8%W}@{G;`&e%H6*ae~AYlUnZj z&b5H5(9wv)*Z}eh;RRMcQrJwsNy*~{-n?ES9tp^hVDJz8A&*1~#}9%Q`+`$KN;)W2 zaKtRM5CGV60Cod_)JiD<2+UX#z#0!U&>+Y!L+qJg?Vu(?=Vyva-EoN(Rf;5M-JNjY5dl<>wr~k@Qr?AHXI7jCo38 zVRcX5_~{^dZ~-AP@=i*D;`8yFf+Cp81Wcr@Wl56_$Vw7NJ838lUilbqJ)(%&6D0To z0?gY9Fk{7x6EUOBp$Zg=QG0al(p+~W0dC2;Git@pZNv#=ePvV}L9_NQu(&Mlwz#`H zEU>}d-Q6KT2)ekty99R#!QCOa1rjvDEkJ;fdrqA`-PJQwzh z&H^y6CnDYl4utV8kEHL46)eZXx8em_+S{By4GK4YuT}FCZGR=STkqXGh;oTTI;C z+z>H}3^LQOkceB$(f(2QGy2$R(f!+8MDQ`!*3xH|=wND4vt{?)EfcFXJ{2J&UR$YI zqed5R;>i&p@SSLwAj3FX!j%V@Dx2sWRB)ADnm9_of%q@L;v%&tPI@Ri6)y}}rvQ@f za16axO`Sxud{SxZ|EHK6&po>(hNu+EYT&l)60rSq*fXCVefW0t4-CwKR$fHz&Apbo2jlY;(l#FypO)8rK z3W3NNb1XL{*`IF~N!bgcn&(GWlOJ>tc~f0N8D;*4Q(G<3Y!7NX#rBn88;b6h2r8(j zxz^|DWFv>p#=qPcwe6BPsvq^9N|E4d)}j?#wX`DYMY!CnM{~0<3Nu}+)&RWvzDPcr z!4~ib5dy*V!Ju@O71<#P{jDM#^NGK{4mC!$IWcb%R}NoJ#syo`E^g*Q;rXUFRu?Z`* z=PO2dD*G5>_ed-)626@m58DtKJFddv##&2fpJbmFZzQTpleVe@@M9C3ZUKt{z6!F= zCzF^2wv{lmxAfrY^HW@MLDO8p9y^KhZSFBy}t9# z&bxfY+^Y_!?Ktpc)wdt=R19Y!Wv}M?gu$v&h85w+agNA1$I(Y1OZ(Q^VwyKn+%Ydl? zzJyMmgWa2{B6mA|U1{M>Twzp!eq}BYDlvccVaW_v7sG{+Rn#tG66a ze6#r*xi0mfjl8&~hqk7-P0xC&`>+Yh@b{XXgmo^a|E!8Oy!_Mx5as3C>v(gtMTO�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

    8JJx=5i_=F7Bn($Q5y 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

    KXWL}6+SZ2+$wDCAuuC~;1q`HaE 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දl>ESvW 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 p5qK?ma;*6m`z6wW$rm+6}aslGx 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%0D!w!IvkyEI>ZC$P=9>B=|KK)AaKBbF$ugm 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 R)Lql(U!y`dBh!}D|9{i`(Psbv diff --git a/docs/semantic-patches-talk-ols07.odp b/docs/semantic-patches-talk-ols07.odp deleted file mode 100644 index 6815d8541ad655350433eda04b2bfe863604a00e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52523 zcma&M1CVF2*Dc!aY1_7K+qP}}+P0@{+tao+ZQC}cZR5>+_kQ=ickBOdz0^svD<^Ab zWu@v=a&{DDK*3Of{-vRSS9TWis$UF$?SJ{l-)v`PXXfJRU}ogtU~6S!}pLqTo?Ee<+|1ZkL-rn~Aj3W3CEUoN}EXtt z7p!Py;^O*uP7KV9{}KzwzfznIubx8+0 zWlFd!^?Xam$WGLiedHh8AW+zwTV$v|YKFFi9e)7CpodBX@2lBZ+1<2TQ1d=5Y4f3)hGM0NeBR|&X za&}p6W_oGA)BDod;mKb|BHNf6iSK66Aij2Rfb~BwWAtTl6rSJN#*X2_Ym3>?lhxB@ zv<<~y;gcjmqmMH^@@V#?=p$^n1mt%a>TxJW>@$d91VAN}5XIh&Ktn|^V?x~);iQ$| zUZS1)aZdWU+*Q~+rkJNP@UtawK3bxiifXl+wGU2QFyN z>_It4&5vqYc-SB`?g zYG8{Ut)+5BOh(P;A5H^R~CAq;!Be9R*gH?n&bjUfKR@5d4 zziYe}I6(%oGAg`DisH};J6JRiKO+OzMHhOLQ7n}ALP)e32I~NH*T+l=Lz0j0gMhcI zg9+4bm_1D&lGcDkKSs1lmS$A`0da7oaLNEx7hF6NmWb1vf~+atqxJ`G*8j_2EK9jr>GIrPG+H3{i>-!#x#E#v-x~JipaMiT<&jZ@*s!1~;710Gw^{ZXE26$6q$F6g z+IwvQy=hR-TaV|BID9{yCu~9@s=Kt3F3r>;hMYtBqSB7)??1|jBfp+N)dphkXciY9 z$;^nrr2T)=H19!K1gd=K6TgH+A9&73bV`}glLcl=;%@ERH08D`Q7V)SZwB8vx!!S7 zY!$RMh2yt}y7Y%Chnx#1>6x5eS18(OWL9)KEh-imQ zK=}=o-2ffz;=vByzrX=ToZ8TOhu}03{QFbeFgy2YaRZVZz+#7>IJNV{_h4cBz&U>m z)I-(`sJDUJoKE+5u&@CJ4%<);_W6AvM{eM=2TUALR{F0w(Fz?2U+M%nFW?NhgDtd$ zeN-@zGw(7xp{aTnPl^#&IEiBBTRlXs4j7yuo+sEhsacqWOHU)5`hEMKNqzBoe}5-^upg7Moa21}`I2D=Ek4m> z|G6YZVNdE`6|69}>kel#4KPMtPD$bJ(OJnJLTnF?I?ON+a(~h1-_;pX@r-jnLYRWJ zUrb|g$oUAnchO7N?FV*(<*D4!8ArCIHS*f&+;dlk+mJzjnE37_^KacXaJ@n;ayA-; zU|{Mb=IHtjawE(4#FH94qKSuZWa9Dja*rRvN)%pAcJbsDJHuv|;{z*qU&$jBV;5As zPofLbf8Qpig!2Vy;XsErM4^sZe~8=z2xm{JDios*g#S133vi=hfK+7pR9^h{W_a?k zhNRJzpt7@GZzcv&E?0@8hoXrS&qo2rLCN@so|(WPQH6+mThtWVl3H4=8ba?^p7p)K ziK+(Qx*$nQ$?-nmB?)#(msP}BDP(xbNVkxwS+~e1WsoC_tecCFYm$u0Fjs~s>Bn7W z?Jmp$I&+3PqGhHax(Z4|7IXZcwkAL)lEZ5OIsNf0hflFTJ3RB4&BsDtP~;x5;?Eie#|dF27nIbb zV@w$fwuSrNe(%<_LP95`{pnUud7`~dGVkoDPtDxX!o76Rt1LaOVTFml3V35?V*2pm zP#bx$xUF&*-oeBR6V}3atU?M8p*TQlG?MD!vRsyF(vaE&egQEmBUMvwZhUbFxRg+y z?bV@UEYMkXAGsUU26h1cu}{evhCXZIX7nNy!JK69SzVahp6T!oT^Pz9O7&J<#Mhpp z>Bdb&<{GH!Hg@27+v@aKFJOCH4D&E26!Dredahk*n;o;_{oSLnpqm5#%*!Odm;(u< z+YE68W<}dIczhKmPE9|#9Y$gjXVn@}Bh$2P)FBv@__PDxz4J%gJYPww8CrJ z-oVzk0aaq3`BOUdz&85#(wo?N@Cd8+BTrezevsE0p*b@oW9M3MXtdv-Nv|q<_5Eja zB6xNd$H>mW%hAHiw=dhgvKQ5ARU^gQ>au&6!!un2FYOo+8Qm=D zBRnx;-3OY3JRzZ7cIg{Bfd*bGOc@-o)lkEor4&~zpAKbz;%uf2`BD&Z0sVEA89{K9 zx=UtQerCjsy=wu1<`m@Y5;xsvelRnZ;yjT!kNmHfQI~qTje4KFcM|C(!0^2Ca{TBz}l<`}ofHx_uZj&|J z=sET>F6OE2$$cP%v;)<`spHYse=YVoNJt=9Z@nam4v)rFPg89P%J027Ft5a-bXH`~ znwakkbDG$Wa8>PlzP&bbRn&d9 zithvrh>S4zcAM_8!&6nDRKRx%&-eKi?pLVuw}zCf|)?f(tp#5Cw#|oZ!Bvs z+8VsPkOkO5I?8M$>a04gn;)sO_rwYm$v@#fHfTG%3S8_CQA>je6>EV=55K)2di_FT%VTpD5*eVF~cOEc_D?N|q0 zT-Gl&f1+Zm3$s~^)}2B>p>9FaXz7dmqq_t+$b6#as5@Md=~&ff{tcg8?-oki;P-BF z-so~8G;fJY9)5z1a3$50owj3EtDE4!MR{P_?2jVF|kBz+%;jBh12T{MH`!kW(pYwzZNh^QxDL z*^`!q+#ZxXo{}$Ey#!-3rLSi5>^4p+vPrAG&pwaz4D)%Fs|fAuZj~~pWj2)$@cBu8 zN3)*a{O(yZX77PmmYkw1I_(U4>u5hli&9eYL8^BYu#Q}!pkUg&?jf~5AR<+;RI&55 zx~y21?3gnk?SvyUVM9xJD+@7Zxi2YnA2N}iq`MvB%+;9O%hcFRFl;6#P-Cp^D58?l znZe83M|xsK4#mLa=#lg)2svesYDGWi=p5gY3CFrkTRLWrHN{qG6}l#U?&=f8C4w_4 zr)`VBz<8etk=435@F7JPy=P5MhQYzbl~+F4E=NIcTY9Hqo=Thzld+Y(BI=m$IUyzM zRLyuFW$?YazKK!M39PsV7h0=_3D#j{xXIgQgE0W#`D1t^V|G(MoZJmrwbi5`9S;iY z!lAAw!C{F5nEmZ|z;cK9$8D&H{SLR~)dmQfj}B3pJss)u6maYng1;z27{VM$Kp}-t zfIWWkEnP5f&yiw(E0FbTe}1(+s?RkJv`~*9_oUGyC`_@_z;PlnCN~J!p)*#T{P~Do z;sZCZa6`fCfC5F>m3A#we2F=i3yG*YzUm?MCaCiTd|C+#CI-DhR@6|(KeXbVcrSf1 zBXIy|ZVm#t>fymA(1m%w$r?&=ojU5NVQW?xo74BRSyEd`qgCA_m;Aof;2=jr*O7!p zs4^uUUEylSqJ6^VA(%xZ0%e5{l@+lC1jz>yFJ4p>M@qk862^E5BfsW$)^H;^I~~j3 z@M*Xs0!QZOp^{DTRtM*YcZQbNU)2+IcBpi^_*NHp(spSI)a@V2{b=!Bk+N^uvLk&* z$sFuaAJ#16Vp-C$t6-U*xU~&4o+ZBhG8cHcW;3^#-U08H>fh5fyZdgyWs0N?Fd05k zukJ%;J3jmuS>rrD10J2Vd<3^CvtJyM*pcWylPgII?_oD;JC=F^k$gM>2OECb<4=1R zEf{Gn-R%i@qe5=9ag8*d?R+yd7vM`okt7##+osp|Gf!9qP5w7j6Fx%_qo7&BuHU+| zW(mpkX{IVTQI&RVOYFU$-$^rH#w8Np!_o&|3&AEPyqZX1GPt(@Oe~*&}FsJ~b@r&i$s_9g6PIc@GgL5OB>JjP)X6RQ4rO17`>1w2J@Yo|$FC4JDduPH92#Zrh+Tx|z z9CBf+GpLAP=$mfshDD&5M>W6fDocLhP>$(|dD@|jlX<5;ua12rRrfhJL8P0y&uVtc zIBMF2-m|Xr7bh&wIb_9(*g?V1VUsP!9wNEn#kH(>bj46C*fMDu@>p-N=(w#WAzKw4 z)l7lTwQv=?niM2&z+Z0ir5_^i0&561O8U|YcRL1{=LR>yCf%c7OhVpp5)Ak-^;*37 z-jr{{LP5PEY}+CqOl>m3I&$F-wby};3_#<8snmhO4z15htob6EhY>I(J*f;xMk5^D z6v_7Qm=cSRQSuV?X}`12d$oaICF{58^`p`_q+N^@IYHHq<)rU~eI=it9!8$IAff!m zk_D%D$O&gexER`}Ze_OZ3#$X(=<~X$#)QCeB(@##th*NYV1Kwy{jxb8M>5fYzOmRC zXN8nm;H8y>VXP#seoC4{l`YibKyw{hTof4zVhT22oMgpzo-?Jb!s>vXiWyt3|D=At zzY;RIhIqL13zXk>v%I1UIMe@uddp3fS5@0p%iN{L%apR4Nrf;XC$(yO*C(8WKa52Y zESn6=cv2k4MW`nm(!}aq+=9hWGO0OcZZ0F-sFRqPM^?S|>r+j6kTwO{JYtbaK+2?1 zCNmu;vU7g2E1n&qpi&A(ApL`JD_JF03*{U5V4CX*06gQl|S*dlG)JwJ#7oM<|#IZiYl!CGK<}jictWB;JhmFC#^a z1)C!echEA@tf^>GY~XS-Qnp@W80P6c?%9iMD5R^fX=3E6sac3iB&zc1b9a>)#Kx&o znNZZV>eLAE<>n-=}QhH*bVk~0b_KgpBEn|lE zt+X|Bl3k%VEAK8{% zcbuF2N|c^opGVY>fqvY>1u1E3!QaLN@b@syD$Pw|K)d?(DQ>OcR=jEp!x?!0Iyi@p z@%7D5u_ttS`ux!sS-}7OwL1RMr-@y-^zKl7IFc^GI<2dbU66461CH_iSM!>T-IU*% zDZGjTiqz*6_?uGYH=-Fd(J|cLA=$(3C(!7LPTCSho$$EEr;Z5S6Mb=My*<*6vyD@q z(#~GAb9QRZ;ZNU^I%aUk#3?=uWE_(2K-=VT8Gp1Ffb4!$4DXna&ak}b- zTxEAthlz@`{xuDse-$@ZNK{gW%6~AX%u;6xC0$QRK&Z+5*u$n;r|hut4~Rurd5!1* zq}CV|zN<@VuTus#Nkq;Wl}n8j^Wi1*HEER2nroFW&CzEPmsuw3=Jz?Jc#Y9nGd%x_ z;LXRriyt2+p)RzOZ&$!_bYyZ^ZW?D#m23H(6WcgVv5T6WxZor{ zJ-EgRd2$e>8${#C1sFzaYi%*oO~jy?*%>#ugOZyi7J51- z*f6MM?}uqcz;9o0*x6F=3K@~#Es?3=r9uS#MOa!kpB_g|6IW5d`-|PJPxBA>R>O^_y-TN$Yzvh>f5{6SW3XHgGWJ~i z#`_&lKv`6)_ha>pcfQ-@b5mz!>{S;ABkrto=2zH6d9x2y#o?Kf*-Au3JCW*)T#-2d z-1oXgnZP|jIGIA$t<0+4xSL1HdsB$}s%6fzHL<1x%Vi>T9&aTE&?)Y+l~MvjkC5Z? z$1)ElUv9en=qe|xpyBh*q|({Ii&F1TvkPHrOR}s26N^hR@oZ90XyBr(LMzW?A;II| zfFXrku!>hlt0jKdEQ%W|3i1t@E>Go5xwgHPh+`NF`E(G>_a?NQOBXWfh#w!?+HmHY#Ld3y{e2Se^ z!cUOLlV|4Wq<+z9n5cGa+aq{~Fvvi2Y>yJ3aMjeEz*VV&Dt_1F7f2+Pa5#M8SFW}0-mDnA@% zOgnu^I_dhMvVZ{_%)5=3M6+^1+5m)*jqOKnw=VeUpKQYQ+c=~ zzUqpY!bydzK5JTP3s-(G)d3r$4~vb&%r#;B(%#YWIgF+QsQjE+#zsTitNogE@G0eb>A%#D?e4V_V0YI@8Wd|RCtW>Ecj_<{1AyWqbM%EC#MKiY2w z2k_fSm`Rv72b3vM_d+GMGwqcb>S_hqKzHFefgoW8t^&f<+{Hb91E;T*SzA~9ef-~# z9ghmVd4AySc)Joo?SnUTxA!`9ZD?The!rY&INlyV`aiaQIsKWuOoQ?7(OT1I&3e}d z>qX+d3}ra5H_)>Mxh}B}m4BIURCjw}&g^|yX-VUMWcGfRSy%TVi_YB~j$6oTRFHTw zS$r^ZvcJ+gFZG;wIKEhj`t4=;#@LP_IK|)dkj4Lj+0j^n@T+!N{qW*(f6lc_p_cxt z(DL){?QL&Q$Ri$HpshPqcA=|u2f)L-v)#H4M&E72)Z3z$#fq*k6XcS!-Pu4=Y4ttY zy+-euwG@NL8a5nR1){bRh}TcYsN0`DrJw9eK4S3P8qDUJV=g6EPR zUF?Yai^utSpl^c!grXsM^71~ob%xHpM{Ls|B@p6SYQvWJ4UH%AogXWc%q51xN_ zHf@V3x`6#uo0ea>n+~dt)qEKO^>Mif=VAqMBV2bTzeS?&VjgbMPu;_H%WWzkMjVa{s(mC&+?~=M)=@30rh9>-^VjgywC{SJr4cNHhh7j zk0ivy@SDQkX_1{JM`3ClLGg_i360V^V5c=KhFO2^$*1H_T5HbOBMYv3_WD9n(aKhJ3`j{O;f1 zU!E3KTs*Zr`LOK#UU(D^GUxh4f?@OVSl6O8Soqh)rND2331_|=< z40RpPVu&1xugAbZnXl)XOE(`_uRMQrJuK)>v5#ocTherkJtoz^h@;#-QaZJ`@R1H@ zfA84ZKNkYAW>1#r*ffJ&N+Y*wfOsc-^4Hlh+&{;3N^Sqx%ISp9M+(5~L_MKNetjlx z#{=VXDD7=ImVZcQM`0NlhXN6nl{SG8r~Of&!dytX9%;77vY*FcbV!@mabwI|Ein;! zJ4DAgpZyURS_8hv4WuWs<7yZb0LanJ!*<-#-ess}p#l;~O z9F@y28aJMnT(scoP-tzz01Rtml|g-yT$5dx$5+Oi)NJe^&orH@k{cn*6{cw}3h7ObCEJLvA z1RHL9y=S7URZVhUE+QF@0U`m*#_R9qStC?@qOhjotuR9Jqm5m0hOX=>7k-AWrDc%) zcyk`I6?edU-N$=bUpkScm1F)`DF887P578#KGc@F-Ar4$(A=xqJb^9 zlaw>;+R-S~-LpT5rk1`ZC~wE))_XG|Oz$_wArA4Z6*Q2#r+N zySvZp6UJ3p`M8?Nag$VpI;+SUG*Q$|ElFe!!C)Sr{3W^+X@D%z__p}3)m^*Ljk{~( z4B@ia_@jjog(N81BoofISLuN=MTt;L?1JfRv^-!Md=rZN_LMJK=1|*3MY-3W_grERwJ@S2`r84?VFSOepPbAe1|47p^oz|5Rb15@k**W(kq)6 z4n?V441d?NS^q2#geKSa6O>jw90?Itd#=+rzVA%526P7^PHjk5mQ|fh_vK(eO&B4~ zOspDo2Ru%tho5Qq=l$4J4BfgDoZa&%g^>`)(w4XbXd7(8M;v%fzt=WmP3=WVvtyA( zxP}o=0#dEjXu)%y$NY5%*;vr)2YO9EKCwlr_+${c zTHj2p4)n&)Y#nSzn0T#(JiJ!a79_4#)?~U4Vm=-Km3jHe#k^)4ufR}AdPQ!dj0l^? zz>GZ|^>O9j_ISO+lQv9Oms7{^31{QfnyX0*YMnz1D-n!^U1xw*Ki%8?A^O#nosFo? z8H*{#)r{Q;{rr70{bs?2eh04zNv5~U2KF3;A3*%UT?{e@O*45{=gz*?6f3~c6ucEk zg}Dv2?Zudz(J5v2y5v%eBV>WS5{Db-JB1uUsEJio@JBR z{mGB)s_e)XvCHmTORLJUGqf_}Ur1!PX%F=uS*iS5-8sF#r!=)BV7C~olO&Kbrg$_L z4c1*1kwupbGX!2{KLRIMd8Ppp3LiM?{8=S>#+rFiI5ktVrzWA)Ydu-GR4uppIaG6L zHB81mo6xxD5VD~Dcvl9J)sO-%#%OFA>ul~)LB^6XSE^u09GxmCs?}>brGybvSIMM8 zD%jfZUq%!k4aFb1;+xC9dkz&Gyho+eN*Y#Cr8Ws<9&@&FWvSo4PN%;QhuDX|0 zNBGlImU!*^XQ;{&w*^c-RNUUH(eO&8Q-W3Y>5=>r5ft6mYDp83Edv}z>I^E1dKeKr zXPp|>&_%HW3yY+(XaP1#g3#5Tn~P?HC1KrC?5s^GCpt%t{F1jVU^nlS{vvdGkvhj4n$(E87T6Q~X zPK{QO8`_Am36>Upo_F49Wn4;=%XT@mS`(=O;hjH2KYU9(eaudkR@{TMg;zF@e}xi) z(d*tk4js0~@E+Xz6ueV&-C>ZvnQy_cQ-ZHeNtYJIgEl;(m?gisQY?O+FLsaVY=S=< zSN!ud+ZQXJ;$iIZ_>=)%lP6V`yDiY0I8C=cVD+cgf$DylW|R##%-XHs8J(tuBEyPO zcIS|^aFX-YlQ{^+#1L*21AJKg!@;S!d32BJzTXyMnNhULWxzwY*cSY#qB?sOtPAX; z`*;u~Tc-+|YV%r77-8n$H4_y|!r7*#aItczq&|g%B*Ov$a8k?uT)t7)ipPP6sSHYh zx51?8)C@Y*oTgSXOBWxx-9(GB#f6F9EAr6JccfO4SV}IKGt^Lw3dImF_z7Dbg-(Nl zYm>2Mk+B`)@0L@PuH!$+JDW#JNggDSs;jCAn@BP?WK4grG)&Z-g*<7PO-otXdYb%I zmmVfH4-I3kw3epNbrooyr-IkLdWyt^h@ zJ?nQp=tK4AY=H7$7NUn)vNm_zQ=wpKVX3nuxd7?$pO|a<*y3;0d%HMzkrvl#tgugc zAagU1!3pfBj&+8}$qLSJTViTI7Ag;1&y_f4f&8wdCVI;u1&u;7ruG&AbQYz!#6EFw ztVZmfyaZ3u{*v^xj-iU>q*4u8zA2EipQLU~b}k&fYh#C&Ope#L5c3RTUMkz-qjo4t z<-??p>1q{or*|g8jt|=CMP~9l9nPmYvxW@j2bWPoBf(EphIW^HIq+2^#{2v(6G)te z@Rz{Zzme1?sd%~Td5C*mna*!S=eWs69uN5OMLEvKo@kE=b8mXq$5{J~q1VSwmq;2q zqS|dnShgDCV<@3Z(|22_4yH~@x!{Jbz_4|hRIX0ZXON~gjDxlSUlU1xWQPvhy1ggl zIa-#H>Re$y8`Y7bGF-GgdQ}2kdTFGXU;sK_mlt7hY=nUN-O+0 z_apiy7-xG@LNadbwN+(vI-85j_$1Jk`k%T^HDl*i^rT36+yQyxUj~+Cn9Z!fv3A|p z%y^m-gM-!8nJU)w2NwIw>QgR;|GdcvINM&<8o`s26TVMHt4_l4aN89uz}LBWKx!Iq z0MnNO^LjRzxDFdyphL8tieJyOX?u?=Sb0SgEYoKM z4>v7isqnHe0e@MR{ZhY!47R<>5E#Cu!zXOEo|&B0`5_R_23pBAL@JCD;QCR|F?C3S z6V^Rklu_OM$X&bcJU#|^a;7!h?V`=0o=yL3tCNTiIpXN$M%RdDS@VX`8e}{kv-~sA zv8W7WsFC3$yiBe3u*iPevg%(1~Wu@nfvLH3Cd>)sjQzh|V$yfbxOMc8DN9M^bb z1ulZuD58Z78D)YMSn7Hv%(RbMq*WSlembDlp?1PU)uO^%%LAU9BM$qH8lNq0DHGfs z0h$}&_e@Ueh+R*2uv3#b7?I8gTKt^|KawvQUDCcfF@V42JB@z4Vup6j@upyHfak{D zS78$5ohT7n2J>t>kUyMUqKWMU&b8_`{e~jN%8{RT_WHd^(AF3gewB1+AXp} z8R0!hRop%!iqVG{})rdm@OG+&QT?z z`-$;ga#j6|{eWc4=MT5hKH+%GZMRE8cVF|h9Y>FyTce{MkMM2UA$OG~#%?FbECw7( zqv{k7r(TUiE~2r-oh$3Io0CwMOuPjU@DxX+s4~vF4H=t z(ZkLvaT(ZWXhtfPEzr0O z=`KJ@IuG9bKLlb;FmOj=CN4n$7_v|d01SuDfDQ12zNiiGP5NE8K98GyHzAr%!ArLM z&>?z6aFwBhC=E<+R#~#l4yw4Bacu88S=a2$s@OP=5qudIb=ER0YZfL}3H*rrs<{h3 z#S^WfHE-ORM)9QZT#kjs=99{DoHyL0bsSxllgzhOQ&TQ`C%JCCOpY)jI%tZl_R?+m zDX!(>p+uWA6yf_d%QFd~|4}B{oK3O1e!g0tZI*3U0;uSj%2|K2xz?1&!O7K>D*!%^ zGr3n5MDyW}j6^BbA9<*qRq;~y#ON9F?<_PN;rskk!%*78@t-7{^q2_x|0Dr!g&7XU zXob;U0|&xExa9J(L}-O+)BF8j3IhFa3UY?&&Dtj@v3Ck`OpfhO!hr%Xqd^z|m<|I0 zI1qnT#(~&m+ztDua+na$K)!dMrheRiH;Vpk1m=KkGh)Q=YBT!%51ZZ3*!GkrV*%)G zVo&I8Ahy8wN9y_7IE=#azis+7!CNi36m!VC?*7^kGvw>i)oEof%rmwL`hX(`=|<+j zH!!GLsHCBZzAzLA$o9OSiqd;hzQ5_}+)mXz9@-ZkW-#o?5J=^t_#QC_*u0K3+SLX( z*-2MlXzc7A;&`;fy$ss{v0d34kh4P%2Z_obEZDfWID2Ctu`80%b-zeH$mWRi&-Ld0 z#1FMHPS(vku0ac{r6*?I?5<@e5<~`1#Q@2wz7TWj;l(1je2V!_ulwLOn!Mm_$>RB4 zqksDzck>D9ZRRPs9|AWT6P^d$iRfzq%m8B0$eS!Li@?cHSFNBkT;;Fb;{gYh?_f8R zbCh(jMLeOCpUl&}G0dRM?FtHUyX>w9gSq51*Xg~pg~%M*jxm_Ga$^)Hxx!OwJD%SL z6FeS7j?TG=s>(7^P?&%Dke_UFEFA~Wm1%_)7Z>US|drMH|eQcE_(dDrjgNf^& z;@+Kz-XMY(jow5*GTy3GjIpA*1?&!7?n*W!=G*3*X@3t_qgud)nAcd4Mlj;v4XpRI zuZ^Q)01yPY$I1wwqO;TFJxPD27#_HR>0+jqORLtFN9w`y9yM@XVi!Uc7_kQ1y|l18 zNU%Q9g04#^I-g~H6H!7Rs}9$pv>&7OtB^AI)-23tm|v!K=}w~IS%#lXL;fJfcq)A4 zWe@#H5VY?}Ckzjz0dvjsFIPQM4X=^R`4;8p!RU??ji>qbHl_7~S8^~l6ZCDZ^Z7N6 zZg~`(B0vE;xCq^(fFZuhxSSv`jWqzGA{iGleWxmce*;%ILXL%kUj)MUNACCe_v4EH z=a0m@?gKmgxxaTVpr?EhuiVvt0&F!sLEecR3V&7!AqA!IfT6&Gg~SkBn1zG91%JZW zT!tHLg4Xmvrd?+vzCPEP$K%8w5D93;_xgC0wL1L4+op4Qf!BWlQs9DN@Dl@T)Qh7+WBuoB-$ za9#C^HS1G&>8 za3qT+3WQc};Fn-+y7Vl>Eb{}>5Ac41)4rWH7*RAIU|*MVuCi%(ZSiF?ww*1yJM zgD9w>ukqgZH29g!;(yi^M~uy=lB%Q_qrEjc;2ANcEN-}0(-8;v3LXA=9=mUU&fl^} z`s8`IlrI>qftFK)@+7SQ1Jp=U>ZXiVAUnyZ1g&(W|E8hWrKy zWD3mQURe~iWoJaZJcb;j90|n?>cZqSI+S_TwquKFS#bIJXnX*NSd1)$T%Y-xX}qZ3 z64WrWc$l<@8k3UGT>NeaJxGRVx+0~wh1*!AmLdY9=Tppe0yWlJ>}iGNl@}O6K9Be3 z`nll;m!HVf5>v3YrGL_RJNpxM4N^aSlj>2?n|7K|;;KC%x0V82{;8pyJwJt?^BeMlf##R|mDfJDDM zw>pN^r3!=njxpU&TmC3stz?}~((O5FwO6BIXC`}8A1^bu`99&IsN}xJc>S`qrE}Io z!7(^@m_u|KE;w9le(XaC-6<#QH*{{Mz^_Y%eDnAlCzOpvZyFh ztr|QFkNLcP$|HL!{yo3PO(y6Su{`;4DBl!&%N@=)DH7t=~>5q)Am7iza1M z+cjAFqA_dI`(uA{I!iPLix!Wt}FkV89Z#@|s zUiBx7==yclt4xsPIR7=_{mB95T>E|Z^Su_>-4gOv;rg`pyINjVecF(3=X)MYw=*%@ z0n7>6z{3)PBTA50?pr12d=}Ocebz7YtMd2Gnb5}q&+wW*T-$-e_X1D)yTGq71>-C0 zt#Hx@QVTkc_|h2MpE76lX;^$ur<2{`Ig1}|U~1>?2RO*dmTxmL`4S0?5Tm^V+J0Um zoUXXY2(BKXa@Uv^-)yHjo(})a6X+69ciiQK1s*Sh0&YO~Y1?k=>NC1A?N8%nM~v}}98mFra_1TbOh>4cH_SmuDBLj|P?E9D?&5J42tgEQfv zNQW=Gnl|yh57&&NA5%T`U1f)02`1qTDB1-Mjr#9GP4A^A&QRJ*f=~F>cqV%4Jh0L4 zJc?^8jK4zg#v)zB7&dK%UD|Vb{vc5&wpbj{)y)1q3!X&U20%(|V#fxaW@e|Z$`5i{ zm9vyZ)R)T6)h5!)(VU}59f$Zi;`j!t-rCQb$~!_c5}E@Q0k~G{ks3X%HGOW^=>?p0 zR}keGh8Aai+^fn8r>N@D1qqE5+1y2lG6w4Mk;Z_c;+u8XofD5Rs2o=29j(?|D5sGr z5@d;q9tx&j;s))!l1wg^i>_ZQDVQ^u1ywPZt9fczTsMD_Y%Tvb;>ipH?q$G$0mGg! z2k%Gz(e0M=gRW{+n5b%&)%6qECSISR9fLkB+B??Y%!!0yXyk%@&Qn`}z6;}!h z@s&|ww~v6mg#+@bT^f0z;CI-H_gJE-kiZ4u4d}~qu7BZkpY&o_7Ce>O0&_AdfU=o2 zSrtGTGpnd}Bv)LcUpYza(vh}%k;8!S?McZMfKE7+uR9E9d%+!Kyv0P)+Zz&?uRsn>V zq3A4wKLiq8dYlQ5%$p7B_OioXV=IvJeLW7?{IRDb6Ez|ZW!$u)31e2tw|R3XrwB|q zg7OQ%qgfpQ>EeAI`KeE1w^@dJ!T-G)hnn^Vd?}#6$~q|V)zYZl|k26s_Aj7;$iUCbfOvo zP95%x^O=n0SNwF>nIMbQRQa*igB1&`C)8`H{Y(#R$~&|68*@|9JF~T!PAjjOwN?j& z%BoCJ`h@c~;pBlLcIof}d)-NX%2vmdVPh&!6sFtK&Ra3q(t#t&xO5KjQp7H*Oe`FZ zvER}5ge*ODp_4eQew1U`?yYq6W9G$m<~$MCGs|F`DCpEmHLW2m43))!ye+J>FMXd6 zu(29rGWqQWN?)5B9dEq*uk9iQ`KC;<=pozYl)<9BDHW5_GR)ZXIg53SVYzvggkp)Q z7}7fUh>c6{5uLZGV2b<ni;(q&*Z9L+-w!e{h(!3o*R%q$pXju?Ij=!w8tw z7bKQsDurUKvf<3wx2!rc3)G!isFr;OFQO_9xdkZM{W%o6RaIjwfiZE-$W#kcE$(CAblM zW4V?k4WBR<-Bl7isFv~Hqs8M1z?g(p8Kj;cg-UiZe+6B)NZ^o(9z)1@7$+2vL`$&a zXapCzAYfmVO54)bD}_UH-x_Y#*Za@~BgfwLLR`rm#e!$)KznW4O%}XE%&r6D$ zkvilmKjtcV!4=Qz)f#7;DSw{{6#$z%$|?!c$MsXBVgJQ0EWYDE8%c{`kVvGDwO7mf6q+1mR=(d=mIQ6p?j1tfSE|NWB=EW+nK6?@({O;6 z4D&BAEO8lj8d*R2K|F3h_`{O@ijRLZ4)&UAPhvBgz!6GdA4FhSEMM`Mh1S17WLsS9 zb*3a|e%3+ZQh@M@HsjW@O}C-<%=% zRcIz5$|BnO8hE0qme&Xl>U^*P$0j4ATuk;ue!K^RbXb%bQDu#!?%xJAq)Jc&1>%X&;fZ>MJ38o>BCd=0l$Ew$DF{a#l@0-lYoDq9iP1 zTot({!(ln7l1ztnzhb;eHSr^nr9)xuV%)Tx)_I0S0%J>p{oQr1HtupTBkHEw&*s3k z^|H+=L0wKocnL9ubZ~D1QeCdiX&@Q7Cd=X2Bx*v^H9yMxSfoZ(ZVYfI;8X-^_V z2aX6F?e(ZlMNyETlJ&hb0hGHIBaU&<*8fLA1)3!K4CO*DodS}Nh`wafXCWx)feNNQ zfePjbPbRmYb}6s}w6zRliS{~}Q;3_Z(zcvI@ZePI9K@+AP=`G&4OCGU>tB`y*i?l7 zQrB{T2ATZq7*anGw39v-;ZZDD{|6r+UEpLl0;#$n2;Wcy2R2p@yB= zgr}Mp(Gt~<4D8PpKmy*hIrRJF;==(G@^a=1JG4Q$R<)Ox8fn&cuJs)Jxo!2kTKdVz(wYJo2`&h~DSqC%;%)O?<`RE4;K({)XBrB3Y z&}ZmsNkw{}DGi_9$Xx6(mm>1#fj&<2&6JNt2rqyqfymp_dy`(HyI17m>39Vu@7EBP z@8W#eA*IH zX9M6sI8uhfPzvmn@*6u3xaxmUbF89Du)JP5S_4^S)uj^`7NE$9Wf@DLwC2-0(%!!wc*{YW5^@qXuz-vcbd>o0>ZRb&9Kt$!OHeWCxL%G?m10-9A3ljJ6}&moNm}gpV2Y`Mwt@h%?3zV||{PQ_SdkJi;)I ze1Ucgp?%;;9^zlZYzvr|Ce6Z|tUWxKn~cQrSDsffXqxU7%U=SNJUl#<;{T-QP=1_` z`lf^2m>Q3p&}Q{PvwLxogQroCrCgbqhS$)JJ58HyP*1Rt=wlK$iZNu0#X=V&ZY@G0E25(sj~J!zRi`Q0_Q(sgrzVd zoae=&1NXn4WnRxG9^BVOXa?F&x>sAPbHoa^v@ZQ+#down6sXwD$VyQ5+Uo=P|* zp*Ulj8JA!MuA?j~d5QwKX<=RjGDwJ?8Nx9H3yQof&NFVrGK4`J!My$p8&lT=&AE18 zM=8AwQ5j&vSDM#L8$*h~PE`>SX%26x*sOCfF+k?2<9mO_hOTY<#^U3rZpt0hUDOaT zTiKB8aMxHiF@giqSJ~h?dbc#}1BP!>Sz)8Rk#;==)HR2dt9}j2pq<~0cEz0R&G{l^ zeLnL&q!GDle)+x@M3$yBUJofcg@-|OqV47^h`Q9_p{?U(GZ02ywH~`-rR$nw1?0s) zXitM3p!lS97GQPMlENyuJ$$Q_xG}X*7RxJIzJd&&_}=;rybc!Ks+4O1+u8SRcnIi0!4Ei+vr?i%g_80o1C?r{-`9{q+Zs>OMM(?HqGS90$&lDZ-q6bQo12>W za{Zg#VDzj-0umZ9+}nKxdU4&CMDY}ri`ZxHs03%Z1yrVfHaQy)sG$o1%q+*cd9zq^ zib99M6^P=*Ve!7e1c?=55*oQDfZA)n$iRHmb!5Ru~E7h`|w>(fia zL}z7nvH8E=smpn`93n5I1L@FUBf|aD|5(^w5g#jkvN}wsfw^uM2vkzt|kAtHCJ4aZ~ zQAvM6=d&a#X|??Gx6@AQsnu{{HIY3NL_j8El&GX5Ny-m>Uo^t12%j~o7618-7!zl{ ztj+?Vj3rtpd7n3=pcsS&)wQ(tnoe4Sd{xw`wa5bO91&CmwfNfn!zr&y?o-;L`XYU{ zNO;^lIKWf^0#)W&cJf|4eoNYdurwDX0P~9^ag&mGtjRLI3nH=9^nq25 z#bg5O$T~b>SwT{NpKRb8GX}I9>DrOOP+m7*gzPo3q|PFNu|LyC_ICIFYBQ(~1S5p%SV!nS;Iz^XQ6y>`F0dXRkr`c$+J>)jUvj|i$QX&pt1IfQnyAxRN}-6o^lN>OYwf^4$UaqgKLmmnVnqFiR;t>$H;=T;W9}w7=48lKEF6 zn$XHrLok#|Xhc!jF_xoFCJOZ$OqBkn6JuKcG)u3lif1vC0x1)_MMETlA;>r~mw*aT z3JZn_)<_OF>X)_iBGQ>sWVp+ak4&gwpJaaArk>aYxjkWzyEKp{lH?QJd}7ZE0r9x*aClVDnO}d<1#Nthn0hLzEPB8zbZ% zS5cnSjSN{8ou#Hoi{}GDd6Va&*R-Nm5DBs8o3zu!SD7kZMOe-@N};kuX$f>bb;4^b zSv+g{B>8KZMj^;nyJb-q zy~gx%PX=LFoKX!`6RBFr+Q0g)!R`1RKK(c0w|w?qfLrm~euqL6*Wpu6tMqEB0j`g` zwbvRoHluM8iXGA3d|cwU@HY7K9FE)Q(Xs0=aO@4~ac9F{oNG+<8X9oy!D4M~&KCZA z9p(?{kr%8#r2dQE_jC|=e*W(ZF}6GQOU&>^gh`|q(MFO_7#%o>t7G=~Q}5l}V)yB) z=Z%&C+!{sCQOcPDf(WH`g|px>D7)*kZ0p*+V@npuuaSs?zV>yIm)4}ko9wxEM;-D% zQn^owku|dILIQM8nzrWIdqG+&Y>yn>_GAK=km+LW>`B)A+$=^Ef>PcE{u{t@mjD z-4OA;MW79X)F%CVxBp}z)Bw7>Xj8V`Rqv$)Uh%4jJLpV7F`uGglUnteROZ#_^nQ5C zd%k`rSwq@<{kD1ZGebchOCiMPkaq(ycr?k4qjz{2oactP!SM1rZ5Y=_wER#)?9D{9 zIr9OYl6^MIsJ=HWF0U9#*ODhmC*2Pc(%g<>Up*UINXhj0Vp~ycgbk6CxM29|DtWdB z1-*rO$#Lz?Mqu+9vAs-klkK27ttnz9(Sbj82Sk{T{V-=^12F=_u!s^8BFN%#tYjns zi!FJf+Wz5H$?|%8NUm$`t$}yP8lq)d!X(!R&+0Qymf%CvNJOK+ELEI+&cR`+WSZu+ z6eP~RqB1FLlfxu_9$u&1&Y5+T?Pvws1l8hH6*h@sdD03TW3bbh^1Ml*MJ2-YGpOga zfqib*UTNR=MN)>QT)5Ts*)b~*p@p+(o4fuJ&99R=rAtC?*QMaKiTE5AkjSCf1a;zcYFDT zq>IwkYjghOMuNlcS-$r&jW)CaN6iD0;cf%6*(BrBKyS<#Hx$PcQ5fB@$mY+*s-(W& zR8h$|kQ3iyDlJ+AlT84|D%Ii*0z=wjFFhj&&Y?(^#v!SB(FxO%`!1;X8`oSCUb==f zc;0`cMz6}L1~oIUwY3b@@ijKjEnqwG45=JYfHq7MKkc{TbHiNiZRY{ee7QQirgnW7 zm5*ZYuMlN2a@$>x(aly0+3Wtf5t7=&mJTbRTr(OMQ75h}YNc(LqnH zF>u6;0iT^EOtA&OHF2)|acLyvyP-xAQ$s*pWjhN|KbwIkjy+rlk`LJ8GO{+@nv=D5 z-MtxQQkAr%7n?h7i>Iuf5r3&rruI+5{h(!_70zc?K&vsOnp{6boP0K7FDXAE}nrhgyJOnR=cQYGQB!l<+?pqoP zpVV#{h%cwXRke`UHmf?88Nf}2>>g&ykJiQgbMlXY<9Tr-=V<-*mPhN**+S80qa!Tq zSc$7E{Tc`$i`1wrb|Yo;rJ`tH6ggG$cuHXehC94Zg|L}b-NBP#La>2W;4WZZ{&=M4 z9&e(;Eut>2&QH1}AGLp|eMz)|AiRq7(#nxZ%k$C{Y%#bx_`-G%F7W8)?ff7de5jFM zp9j2A{`If8r`o2UtrhhQqDpc=siRD%tcN10!6@0`FqJ zBnAwGM_<8kF6SK4kO^KrFZEWv>4~cxBdQX^DQtuAH*as7iq28FayrJkK;Vn%Ql4b_ z5}bT+u9dh$+%ypd7wC0i)H;q#Kf{yrl{$l>IcN_F#UwM)03i=EKgAifgx12JzyOBo4X{_IZun@8fd{Se$3P6z68o|C(IGg|C1bDN>NUB!G&lGyqTsSe(R) zXJF)l_91g~)7>{7+Rnxpk2D_Qk2C6rKcBTdDRx=>?Q7|PGcI(VwldUr{?TAYkeNm^ zQ3O?FA91Z&k4hvjXf~d;O_&e&DO>xw$pHn5H6=SdVQ$Zm%{i4xnWcdS5$u$iWSpk4 zmt@#~6+)TnxR65D42t!uhlJ5r>Z5{ZEMq;5q@Qh=rg`SsaR?Q<1egEFqcB zdBM@8WoVl^EqCE2$ZvMYON`0-9m2*ldf-n$XUHiewsCLNWMb|235#hOa0`oRVYaiP zH2pRTeul{|Vfu`cocyH-+)>niA7LX`%|tRe?~oe6m_Z8;J4|upzf;u=5unAxa%$YPVX}fY z&9SmrJyTX%?&1qgX|Lv+f)Z;nt_>4WiKwj^Ra2h8zb{r>re|&n%L2dqpwtJvjBeRp zOgIOV)#|()rY7Us=x|h3fgdaBDgCk&rsi~4ZJ7`^qh=FwdCLug!UOH!M}#>ju$zc6 zv`H@^`|{fZsCAM}ZwM6;``%ADS{xz#)1KE0hQX+b2OjNbrx~G$*a$qWf=h~G%VC#~ZrV;`LfF`+ zbiE>Y9WI=6V#tSd0G@gY{B-e;rf7JHdydpM0AYof-yXllRPp>O2xY5T_GA?=P*+A? zMlfa_d>y3((FsJWutumV*lNR_UVI|6a9XJT6QYklIBYLR-w~`7N#KRbk&`fjBi}!w zQr+-?h*3R4O+@Rl5(@NMevZm!YjBEyapAuhFNc4cSXq*}_?Dg`SFO1n=54O?Fzfc= zvH3rUy2R}D^4Wbm{@MR@@^`l!kqyp)Z_Pc#V_x)OB_bqtL{M+^~5v14bPX1#NI!2$>XBvNAGJ8SQ zLY#3@@9T56b`JZk7viVq^MU=g=jZOZ*Xxx$B*TxE`+n8e)~8dm?Mo%do))6_ML;DK z&ao*`sxi`tR!^y8yAeOkB2*sN>h6WTu47{MBMFG`*PyT`IS{ZgZ=iH>QGcnlANJk9 zS;>CD^(1JQj9##o8t4w3`BUGHfMJ#=TKDNe9c>amd~%FmE1+UWN_yF1>#dEou9(}| zg8El}3p&-e%EE{UY^JVJYxYloJ6TZ@KM~;=QSLIX*>fjdV}~6`5H|SL=V)WHL^e<= zh30(a$!n#sfifnc$9sK6o=50PQq23x7&OvkObNu1)4M^JjG?;ZM2ZisBNWj1an=PHl8%z*Oq>i}Y@5)w`-(g`RI_ zn=5^9wj{9SvfSI(hHqWq?bq?^+r#EK)LrGgm=I}wj@HvTYz}A8(Q~413T3wCe*FVHM#IY9Ee@c>1dz;;^ate zLjh2bKLqB$G))sz5_3L?W6_{mhzAR>p1YMYu- zB*lQ?(wLx0)y1#in@}h2ChQM@N!r-7*%QfbJlWqNIHB!A>@lrv8`J*t?w`gR%4q>N z$WAFo3Tk&K+wsag)J!EivBuB*5KR3R`n9cng{T<#GgxipPHN9Y#$&cy3eEPaTB>jar#934Kq0iu$*946xL7XiJ*0g>f{YfRv3gXG=mHJBOqmri0CRuvolV-zRoyyQomPBaJ zLzrc9Q!J%2Sj)F_=|Es(&})^oO(u+6ic-yGhC*BmpG>U0OW>mz-9nuS`|dlht!%=} zcPR-)6&7#KL^Ny1sr=Yk9R%$Xkd!EE^JI5pqx1;YoC(YzzN7b-ve0hkB?FK9uQOPk zV|w(ZlC?ASQ`7!S)360+B>gH8bZCIof9x7@ZtaK=VLJ#`O(|-p358=JP1z05U$&Y9 zJlyvm-!RAoFxUOj2OdmV)o)2?>3Fqf1a!}58gsH_vxepybB+|~Xa5wenu=ya^dUzQ zD0_lvZbC3!|05bRX;j#!P#+~Go7YoJ+8}i#VonW>EACP{y&+>X8Fw?0I2<{kU>fag zl(d=>rQ<5Fs%;3(WAgUPW6BFjID9oyNSBhnkLE0cS;fsF>zw)zG*+zFK;I*e)nsdur{ZE!_ z@J1Mmt~E{Kwbu*@?C_jDy8G@n@h=DEWL&{{P_EpDZ?oV}De?h8MU_TfUvxJHc$Yaj z1;JnItDuigD{eY5 zhlc7WyB}o@)TU){tgcmR9I3{+62`(43KaiZ*o{jb@~5 zt}25pPN6)OIRsMB*u{wrJM=sge^S*9i|A%S?|%LY%Mo*1uSApgFY?cthz&Ze=BIK$ zg+w#u+>s<5AT1MKD;p>h*#Z)MLoLdzJ=q&>+^YODZdAgEkbez)%jexHv|3Ig|Mb*k zH=OP*sr>t^Ry2b^JxoET+6PX^HbZ?rPT7`50<#D&Kr? zB!98cjDVA0k^Ar$jxe8FjO%RyrhWhpc@=m}RSLC21-5sWG_`y`x*A?s&U3?B_8N_f zTxF-B`wP4yAv|P%ePRc`FhS~E)T%Y9a;IhP`QDg`Zi(_!7D$MSdBV?ew{p%9ohP=rar%#K&QOWH9lzrI(W@L$2HhowLAr>Tl zmW7Y|J4YYqRQ6w+_EAAShE^f$ukI%#&RpLaf=ur5S`;U9gdwj0kX{jAK0Xp(JaUrA zHJw@sy;b{Dla!fgJKSrQ3_57X!kuRyo@s`edk-yh>wLv$ShG>FMo@FUXI9Rv#KK<8 z4dFEv+(`g4C1~4-@CnKPjy+C{Q(dDla& zS~?%Pd|W(Jd5K{1p$zi7Z{()N#*LJthtsh=IR3IL{x>tq!dVE9Rg}g-`O4u^(x>;# zVx`3jwHKX3wdaOX!>WxMRfCA&%&E$^N1N-!f%qQr^Owh@wDDBHDG#p~4sFhy#*HdJ zf9jrAyu;f=yOga*mB*OUZSI5edQ_xfO4o`rc*(hl&uOo7BofiM<*v^S7VZ*hhWp{m z+MG8Z{(H6?3*^Nr78Z>-Cb28WPMnD8lYw7AfzhVC^;B(2(i%Hb(5r zfF$KJFEe8@C$YeK#?v**sxXbX=MU0&kug(H`tf$v!QV`!R=+F~TfS0Ra$8fffR=<> z>~c3!*wtGvqNpM>2;&zKjGEn784M>ppi7;8{3NCb0&37{iK!IvqWh$bq-0YPqh_)@ zt?Eh-n~9=>d$P1m@Cr0Xr0x0Y38R~0Z=`;cd1ve_FViaSxiCEF2OcGqF`uT>Op9K< zyY+Z$4{hMcb%pyz*7WvjM$njKk$wtkdXk8ChzM``SQ1DjwIQ5qlik#tz-JVqUE?x1 zNh@dOS=a@P>6Ou?q%1?Fkf5Qvr46_Xk*jCEq)upY(m*)s!9;Y;Sd0C*4l2S9|9LxZ z{DR`!j&ES7>SZ?3M@sP}f@POO7XxGjEM#t|ipRn{+t`4T!Wre3ZwiaW;NdEL&8*={ zXmdi=zFroUS%jp2Oo^`pK>Cud74u0mqp+Dgg9uATdIw)em<;eox)*(B=A|=`Mq84) zOdzr}61`n}i%{f?R{t=Rg;MeFY#jQOXYuZM9Lye(;5}fJ(K4azHEYm!GW@2E;Le0F z5omio*eHMtR+isc1(!dw#qTo_pCmRcSVFY{hvs&YKS@`q8)oDL%(+9zCHq0gO(C4@ z>{{vU7lrS-9n_$-nC*YQ( z=RAlq4Ks|0?QFv^7dA9|0#l=OmNIJB0{2}|H}(#K?b6$~!%G)p}Rw#80W zpe5-w`b)VZ1}o*w+l#+NxXy09$J{^X!#TEz;6?9fQAf&Zqt&Z*4-ll3L|Za`R6n zCKVy?24frqK!zS-%%xE#>}Uz1z>{Cnh0)(i2vL<5*K#xx zBpZdVuPN2^DRI(jt64a(+JwUkx0enblGL<;CKcP1HWQslp;~+Cl(XjUKw-yiaQIiP9df}O8OG4` zdBowfvSBKuc z8eSBk@^O9L;CTI)tpwc;34S3;Ph-4Yj)BHa7r46RX#lx&b;CXPj4+r*=sJFWGk9`4EtjK5AfE zRsvo@l;qzTT~(M@ZiL7l>7qQI_mF3cFOT&zvyz3tiDv)@a*xqows8gmdOX;YT9V$8`cD;y z+v?yGLh|ShSSCTycJ!q%zVK)0)-tccs2;u{I_bbAF~f?u1aQ)0Qgv;t0uylp|3Rnm zTS92hUwYppx{QRdQ}G{){-qDDCv~5?9_InoFuGzm&pB(v-IWpw$S*5|{ut20v>;gM z5|UGM(Ho6=B8mttP%ak10pZR*Jw;S=?1J?os+bD)yv0s&>tEx39T8cl>sQW1&JC{? zH$-7SfzR=04eV}@O^yT7ps}w^q>p~D&oh+w=jZD!CKXpW1N8Ug&(jYBYnac=Xuft{ zq2K(!dQjd{!7CC_JnH)F&vdScCb&^vz@Gz;x6*~RE83epeyW-wy4B*c=I8tYQ~RB z!kd}V)ynwS&SpAV6%7LOTLkdccDuz5bwFGjOfu7mr;cLkQex_^$8Qfg2ds+w0c&Lf znPU_3t`j_LElHp?rrJ%zc*aubJj_IG9msK$Nm%I7Izc$APIdLAzPAd&m~{>?-1{-i zCn1v!X`oIxRZ)3i@vYx4WV|r20q&WpW|!_^Iw&wqZK9kJfLBkDYxt-Qc@%8Tvknaz zTem2mJvB>$742?;%1LEM&_C|sgt&mG=qsoi6omuU!A`Dan`H)n|dvh5A4o_ z3OcFT){_~-OdDCauWO8nr(N=iU5NTuPk>K#bE1AnsLsppVz90oDn#^S)d-IIy}NoH zSmvpT?I}+w|5zo&HK7ODJt_6sp+sAyFKnp1z#RKI%U4ZPY()%^dYn%~=eeL3bT^== zEA?Z{H{eL=A+9WtJuJvz>%+1Mr5|*nl&6N%T<1}k7!#7)&1P~@yL6lJ8`A{Pfc5d6 zSfnBd+*f>bDOm5S6yob-$cc3@5VLXc&E@`Zw0V5=m5%xQL9E*_ ziPqJld)lP2##@!<64|O2&3*N&FgJ!!!{kXz?+!@Mip)E^RuFuZvybU6q1U!c` zI><)J9joCY_oh22C`_TQ7(4 z@kuN1&@Wf7q>tu{Pxp#)s9G3v67Fj^NcplF`?sXSHFfG@b)$_9G6qzPYC(Nfs+^ln zj0qco7&5X`-%cdH3WkxeR~U$J&cVw@&Ww|}i27pe{Hzt~ut{`7Y zNJ%41L{BiYk5-@E?5!*bV=LZQyzss)e%lnen(KazYsaXcr+cA74)4R?*Y>dou@^F6 z){j9(;0b7L>FbNRj4{$pW#b_nDh5M zt&8!A*QlOX(^s#qo>#>i%9aAtyKUdm#{~|~$YOF$`O5DLLN&oP_WF65vOyA-^i6fT z=En-YM_c;pb3cE2tvjJd@m6ZT0BG53BJHF{TJJVhVmZ-oZcx0-%o0^frmCSM5~M{7 zu1q;C;*Qm9k)Es;J8)&p$tG}#o|HCBh+xwmxgq>f=QHgRGmWp+U6L_R_B*P ziu^1HzZCMurs|9e_lS#~ZQWiAWZ{ngS(B$##D5HrR5hdzSE#-%-md|}GB6JG+K}J3 zTqQeU&(YY*8ah1L7@019c=vF0<~b-+9GV~H=4Q(f{;$6@afZ%QcU$1t3+R132GL9C z{ei3HNX#?;XIJ9fdN2Mb3b!VlcBGn_gM+wBDufE7%%uGa70ZAYx9uk$x-F_74@U#= z+Z4=3`NUOq8}?X;Ry0JutG4>lRGHuA6IYHojqaADJ=ky)YGJE%qfbj0;qlU0{gV~- zHzOA3A)YA1uidjgX`a&=-+H-iohH@IA$VX6s(|{)BhOryaAZy+<`hj{&3q6fFLMcN zYes%aFDh@+k+?AFeNLs1Z29;!|MAP--x5>Gs*)CIB_T$oXciw@g;b`9nGvzez{ebv zM#7GiL77^e!Y;I$km>+)6O(-TLxISX4BG--@(|;-#tFwSrDsgpU#2Np2bo>?H-~xGwjH6p0&*N#hZ9F+S%;bql2QoAOmK$r*$;Lzb9D z3{o3SVMrLeTl^8pPJAVj-=c^7PitePGl|Et^qM&|6rs?1VFBaNdRYg1bSL2Mn|NEv znD93~B&QmrE6$w@;`R6Kx{^0;4(hZvY&W@^paJFUBDxg>7b9(OHyP-)z4yS_|Dj;7 zTc}XxY~T*-rwrTQaca!sPB}x93-Nnub-kYDE?{L23VeWBe&hM0AsWxyEvuG}+S11^ zykKCF0<&145GL0}SYw~qG-t_>tQ3xnr3fBLke;m(t480O&qzDm(OQ0ZEj@2)bG52u z2T#Wb0?1ZYBtY#_qHx?-M{t(SltH~-XtlWLW=sE+`Bj&rAAkA)Y7<#ESZU#d+W2$f zFNjd=s*(%ss}$&gDO05j71Z|%86?^U$6YLdOD*^-t(*#F%5iGf6C4~obcl#OOJvJ1c0|2XT0aOv_bXWAxMZkJ z{y-hxi$SV9uUgai+`c`InR-O2I10K)H8hWOXfD9eyx>B9XuR$9 zef)(Cv{xL7C^o)sNj=9tQL`xQ{rRY@^?l83#rOTW?(FsQEUIA|9#)Kz5CS$@=H2jc z^SepEq+PaMG5NsKWUsPlxZ}t>p`j0dzyD&oQ(wYp{|Aaep}(aMxZC@-P92|~c`07n zjEl>eyJoo>*F(f<^YRO8?Qhri{`>ljMJ~w|Iv=H20-0z9o@~lzychwMih=I=e!1=a z%Wp`RCsItRrSs!opRPVO$4`6_=79#VwFS`TkKL!))!~5Fpk>`y5n!2u z@-}hAO{NEE+zaKWrw$6RS|8a(&13Hco$$li09}%s{yW);jJW{7+b> z0&sz!L|Ac1$FuJU>MLC*e|JRvOxQjpLCELmZ-%6?=;<|!JBUtcT#4~KM z*eq%VPQrw5(?5LUm2GNb{JoX0%@h4J5XnD;bugp;Dr!16VJB< znEQym$Ab^2YaQtjjYYu1HNb3_y*p*Ib>-YuUQ*PxP`IbYc6_}A^uH-??Ip8H{@Dkw zK{2B*IY=)FB1|!VLg)?|%GV1)$$(uGmx{Uq#zC4A9dH*VK;1Tb{FU?*talamI%!Cw zP9V_M7^ERXUX$wbi&z62gV0I4=L_Em_%outV&NZ%2fd`;5ZMpKbp~SF`eH*Pvm?$< z7Z^mvI^U;B^I6V-Gv8@>Ri{Qrms36#qp(Pa*0%d9k~=u%<703@MA{JQ)ids}Yol(V9ah{V{(FCUh4JT& zf1c*XF)L%w8pWTW0E>i?y0W*W^cZkTP;)*;se!;cvC9lAwQsDl%B%H(7}{gOOl%%5 zq*n?pqXos!y@Z-#Iy z{ir$G@%6hfBK%*9H}ZsRaV!$m;Tb3R;4xx`-ODACLk8Hm`0sVCn%x4)#x8oc{XiAx zA8MpUl^SQHB^fTSLd0e!YqRcVf72siS#P>&p7km+;4H91O8UL(LSW|mNY=(xR8GE`Lq1SLmbA=NND(VV12E2@a1 z3J@%kq^h9dQnYuyuKGWDtsvE9M~X5Sg8Y`ra|uEdq-VONI5JlNj0Gobdou#orC~5S zsbhJbT{Ys*-rFk}ONcTo%rdkUXH?N^IvkdRE9rDx_bVnvRMETRF9I%A&?P6y><%g> z*Hlu|i>Nh(nKe~B(zw<2+8zdy(QCRKj*rJCB9A#MQ?025yfEp}Uug7(iOi2ZS{wUb z3nPzS=Dq=gsYkur*Zh1Aetk>l9&$~&F!YZJ$;Ted9yZ3psdP-$3#(get#B}Xfy>WC zJq<28ugjq0YnrZ&7;YWS4W&KonVmEL7I$!4>(Xk?MFf#2nOwyhNhk^a@5C(8II|ub z${)gp0B!C+ryJBBo*kUx|C4^z{QuLhtd(yh8Lxn+!O1%^`%_cS2zPt9UGL_8i za=x=l`A^ShwV65OefbWCHh8|?QOcHBzS@ZzX%Tn^*=BwC>^APMP7lp|bH2JtICH-K zd3e&1XMSbvgXXET(ih=56C7SzYGJgHiKS}0#YzMR6&*_7Rl+X}E0!vl8&7HyMhe?P z^N4=F7hB+GS>|{_y&VGZM58ecS&>=h`N#hn zMc*6s|Iays9GN;6R2$ztggh_5lY4Q+c}QMnL5)O4QN%M`x_JIP08V;e^gsF?nG*%!u6En<4doY zC7vpdoJ=jlGyV!d=O`g95S#pAg~l+K%O%nLxAtOQ3c@h^ut7C>`EMr2_k*v_J|Fnl zZ5PFH%Xn`GVgYo zrvJHIq!W)K$shGfoQQnT8&P$YuA!J3yHRX-6&~^`{Rl=#%tLQsMDO2K^4K4O!WKbI z5^$+sl@7FMK^fyX^Qyc1M$=>uG&@!rr!@0=#*dXm)8H2v+TeDIPE<)x{8MOD zd+KHwze2GJ9-d1sP4ck4FcNktCD~v5;QRuXR!;c+AL`C{1&2j>qm(VJ^V~gN8 zVM$4T;@oOyjH*WJaeof_t<}BSq{Ed z=kE42OTH$&u!gyKrBCPctxPlZU~U_#{AJFt7h^9X*^N5MoG;yqx|yILL+s^TjH(K} z^2Q~^9BFId>Ab$#n1ATLVcxi0dDnB_?7neX0={)Uj1@V0^d2br45|zJx8f@Rjc=BN z{A=ic3);zYaG&!h{7wC>8r4S;saBvwfR2dI+|ZagXQC~AADXAxcH^0Y9J;S*@0-pV(1Q`Dd9;wafY(>a_D%;Ewl`V_|65m5d+>c#sc86J zT|xyIolvS1^{6xu5zIzmu>?Or2jk!upm)5dalI{#NBJ<7AyGaE)D}DdePGEG#HfgR z^cL_xv9N`&Xb@tC?Q|5AEv*oUiXHraLy7Ra-MgkiEMz*<35kEhAsteyV&@=*924kg z^%oF%^@`a&UVx)Ev}pV=oadw!CDH=~5*Q{_zMZ~VIQ2fllQS*p1o%CSOp51X zNv8&S+)vz~a2=dcxB#fmr^vbQY|y9oX;m}4N={ML3RpEW`gV1RFdKs(iJJRNY@RC#R$dfI}5QT-E`t)KtAdT_T za1T1Mcp9g|vT8*V$3lxBF~qQ7U+FBb?~Qw~=7=c4Dk9PBHr1k~_Jy&4J8*2?H*9xA z>N@%7rwi}+HLoT+l?p|6s=Z13@Z)Ay#+|&_9(XJO&Z=(>%m62c?DV0s-IQ~VF(`rl zCt?LQBlzhQ0N@!@AT75o^oaQ@kL(C`_*u~^OEw*;R&A8EQ?ekfQ?c|Qm zwbkvR+8JJnhlo?2M+~t?fc1rA_jZGS3#sv8YBiC3KQ4?c+YNC-F6dJYNRO(%x0nBu z==f>9Kg&*X<;oTs4C&MR{R8-)?R}W~NZ?A$0RTqIzyK7afk99J{!iQcK>cp-Tq2?gUi$l=H|4JEK}m_%#@tr{HMgqP6@*}6C@D&Zr$s& z;uG?t;r0{oB>w~S1XT2%f?DXNs;=aYUHWV70udp5I=5BL9J>?@<{Se9@@2*KUm-QC?C zf)m_z24f;wA{xD zhg>l4mFTRwUU>PUX&<=q;m9nnvu%;7npYeg-0aRft@76lPb#mt7mTYj$%Easnp>>f zPMOoB&4$GnT{$ZBt<8W%=&P}Oy21L#C$?>`->kp@Yl7vT9kT&I0cus&+57#DIsVYl z(E;$_0IY+80>VXlgk{3`TN?ZFy*)vNDC}n`Y!G&IP5Cn?rbdTdt2u@mR{q7>Trdr*gefWT8{OQ$v9InK>?_h;Cp_@w5bZBIg~>@hD}UOChl&j4%Gj*E*_KBi8 zSu5IBggDgW+4>U$vu+@GUGJ^3Z}F)5kigF)WbX-^cCX7f#O&UE*60KLC^`no>Tgk= z+KZyASxyLmkdS3ri`>(X?Tt59zbm$O<%_lD5B`dydgQS4N^jQXx9)kNS2PAj;VV-S;sw??+MU5q;$?(Ca!(S3Lw;LyN-T31t=xtBnzDxCSo#-CoG@W(1g5|C2=YDXQAR z6C66ajhjQ=yJT=C(t5p1w|tt^``2%W*k^7=!c#`MEH~Hu%yL}s{l^hdZjRq}A#1ls z^5ycoZcD%_bDGz{W7@Dx;f{&=mvx{J?5wLMAu8cqund&u;l7^H?)2wIh5ohcjHR;v zQJ*};>UOa@GdI*iTQ_s<_I3zp*Tv=8p9Q6wI6WmGg#O-!f$2ridtA?L#YbRefj;Ed z>#`QdOv3lO03>Q*8krr&ObU@22LJp;HHjnWC!%lmd&*QzH;<%sf?Q_OsKfcQFYZk8 zj5?dGS;^8d{3G8j(i&w8S$G7Z7K3QEz^rhF(MdFjwqr35OI2$Q^TPs*xZ;IX|b%TL1doDX`O z80vcgdB}D01NYsSib#A4ML%mKdAU9v>Au~}8=;l4U2*duw5yJxbu=qF&eW=)mRg-7 zb@@evvGs6;(CQ+!T@!=t#Jj|~$*Xg_8cS#f8Fg@sO(N49GqfA!m)s6XU^fUd6&QvJ>Du!TMy&7xu+=8Z!K_d+Y1 zPQJE5@;-)6c2s`uK>oKzCvXIh{L9#;|5(bUZ8o~MYc8%pAs!%$P;Jr<$ z#L{B&k+Yn=mPs~h4)`Hx8sqA>g_=Ed_Q5)@*0DYk>XYWC-WP&Mg&fYRBj(tArvjGS zi4wG0B^z??IWK?J$~y406WdPGjMR?DT`@pz82b*RheVV$3!$40h5IO#%bWv~rhPlQf+BTx40zGr(4Bcq-St3$p!V zMR3=9#WRwENEsb^l82JM9q7hiDtf?!}naVIE|O3HT*8=&(zJ}+0-1oK3YKlzbh zhkPPrk>}p1rkw^Sx~PHq<;C`SG=m2$(Bb1(I@mXhTuX74i+X1gBFTrClAHOolyAhi z<`^xJK_#e*<`{2*mQq$X&cW*)-1}>e;NgfUQ%CnwUez0`jpk9S;7S^5W5~?$)s;a` ztmS3o{s`q|`r5E(7V2t!t?sK3J+1E7PEK4&r_^Vs4(>z6J1N>a-RjDW@)LHI^$Bw6 zg&sqzF-rUox|6z}_=S}c)3*~^=%nv7BELmk_QJ2j=L6lC+&{sR?LUFWrT8?IC`vAL}Ir1p!Gjmt$%RC^7 z_gBK%OS>lIV*H=pzE2>h;KkV`+o1FC3j6}EGLcKZ;r=5weFK8c9K%j_F_q>}sN&5W zu5$;PiDCh30Vp8``UX))uIbf+^CKH%`RB5Zno|kgzq`8L=-GeVZn^Ff>krduq0uG8 z+K9m6`BVuda8jeTnXIXJRAc=prIhljW6%=r6D2N5+L;yGws!AXV1-)ZSS^S|2q;6> z()PE7ti}lEc36pMJ%ab|Q;9mKhSIXCxkdXfIzvA7TN1bHvR+K=z4a)F32#LntaH zAoC{Y`uMWJWp8g&H)Q_|g0s5}n;6{HDR2K%6(9p=d*R$!Nam%aI>ojg7D9%A0rLyl zm(D6itqaDZwY_>>ahupgdyI?p_wiMktGT`)oGTjv5 zz$DW^c%ZH+y7R`#n+P&~kGf_(I2@LJ7(DCusF*6P)LMcY@#MM@!dEu{H1 zKc3^l&n^&cOn?bOW)y4pR?c74K}w>xj5Y*(7-`5|KOZY+a9-Ya+r%8M&mym|WJCN| zT^+CHYw&Jn4Y?N*g&lPZrG?UZhTuyi;(l9HPFoD9&56_wkH|?%sBxB+Ha~EbRmSvC zCKwR~Dp6?&krk=ehAGR{?4vT3sNZhaZ5t44Sp|eglE#&x$#;p^E2b;Jf7aa_<&uqJ zLQ<1T9#Pcp2p>@tDV=Ph%pr(%;1?548&sPU$Q@}J63#G~EQN~WFpgu%zXdR1N*pFg zk>%rr;s6|2KLnmLzaDr9v_YPP(RSXa0rc$C5z${zsk6CxNZ!g&+Z;vgr+ zvXHve_q42vsdQy`QEwMmV##h75{3hYHB>~Yd zSd1j0ZkbvZ`)17^x3DW1k1H*_nd_Ne2#)fnB^A(LlWT>|Y≷je8 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

    fkFqH
    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

    1lqi}e>5Tq2wG4m>${e%)sbqK(Dx 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

      KXWL}6+SZ2+$wDCAuuC~;1 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ද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 Z=Kt*^t (match Ast.unwrap re with Ast.MetaStmt((_,_,Ast.CONTEXT(_,Ast.NOTHING),_), - Type_cocci.Unitary,_,false) -> + Type_cocci.Unitary,_,false) + when after = Tail or after = End or after = VeryEnd -> let (efvs) = match seq_fvs quantified [Ast.get_fvs header] with [(efvs,_)] -> efvs @@ -2328,7 +2329,7 @@ let asttoctlz (name,(_,_,exists_flag),l) used_after positions = let asttoctl r used_after positions = match r with - Ast.ScriptRule _ -> [] + Ast.ScriptRule _ | Ast.InitialScriptRule _ | Ast.FinalScriptRule _ -> [] | Ast.CocciRule (a,b,c,_,Ast_cocci.Normal) -> asttoctlz (a,b,c) used_after positions | Ast.CocciRule (a,b,c,_,Ast_cocci.Generated) -> [CTL.True] diff --git a/engine/asttomember.ml b/engine/asttomember.ml index d0c70af..acfa8e8 100644 --- a/engine/asttomember.ml +++ b/engine/asttomember.ml @@ -321,6 +321,6 @@ let asttomemberz (_,_,l) used_after = let asttomember r used_after = match r with - Ast.ScriptRule _ -> [] + Ast.ScriptRule _ | Ast.InitialScriptRule _ | Ast.FinalScriptRule _ -> [] | Ast.CocciRule (a,b,c,_,_) -> asttomemberz (a,b,c) used_after diff --git a/engine/c_vs_c.ml b/engine/c_vs_c.ml index baa7f9f..3f2e7e9 100644 --- a/engine/c_vs_c.ml +++ b/engine/c_vs_c.ml @@ -74,6 +74,16 @@ let (option: 'a matcher -> ('a option matcher)) = fun f t1 t2 -> | _ -> fail +let same_s saopt sbopt = + match saopt, sbopt with + | None, None -> true + | Some namea, Some nameb -> + let sa = Ast_c.str_of_name namea in + let sb = Ast_c.str_of_name nameb in + sa =$= sb + | _ -> false + + let rec fullType a b = let ((qua,iiqa), tya) = a in let ((qub,iiqb), tyb) = b in @@ -100,19 +110,24 @@ and typeC tya tyb = (sua =*= sub && sa =$= sb) >&&> return (StructUnionName (sua, sa), iix) - | TypeName (sa, opta), TypeName (sb, optb) -> + | TypeName (namea, opta), TypeName (nameb, optb) -> + let sa = Ast_c.str_of_name namea in + let sb = Ast_c.str_of_name nameb in + (* assert compatible opta optb ? *) (*option fullType opta optb*) sa =$= sb >&&> let opt = (match opta, optb with | None, None -> None + | Some x, _ | _, Some x + -> Some x ) in - return (TypeName (sa, opt), iix) + return (TypeName (namea, opt), iix) | Array (ea, a), Array (eb,b) -> @@ -128,7 +143,7 @@ and typeC tya tyb = let bx = ba in let iihas3dotsx = iihas3dotsa in - (ba = bb && List.length tsa = List.length tsb) >&&> + (ba =:= bb && List.length tsa =|= List.length tsb) >&&> fullType returna returnb >>= (fun returnx -> Common.zip tsa tsb +> List.fold_left @@ -136,17 +151,23 @@ and typeC tya tyb = let iix = iia in acc >>= (fun xs -> - let (((ba, saopt, ta), ii_b_sa)) = parama in - let (((bb, sbopt, tb), ii_b_sb)) = paramb in + let {p_register = (ba,iiba); p_namei = saopt; p_type = ta} = + parama in + let {p_register = (bb,iibb); p_namei = sbopt; p_type = tb} = + paramb in let bx = ba in + let iibx = iiba in + let sxopt = saopt in - let ii_b_sx = ii_b_sa in + (* todo? iso on name or argument ? *) - (ba =:= bb && saopt =*= sbopt) >&&> + (ba =:= bb && same_s saopt sbopt) >&&> fullType ta tb >>= (fun tx -> - let paramx = (((bx, sxopt, tx), ii_b_sx)) in + let paramx = { p_register = (bx, iibx); + p_namei = sxopt; + p_type = tx; } in return ((paramx,iix)::xs) ) ) @@ -158,11 +179,14 @@ and typeC tya tyb = | Enum (saopt, enuma), Enum (sbopt, enumb) -> (saopt =*= sbopt && - List.length enuma = List.length enumb && + List.length enuma =|= List.length enumb && Common.zip enuma enumb +> List.for_all (fun - ((((sa, eopta),ii_s_eqa), iicommaa), (((sb, eoptb),ii_s_eqb),iicommab)) + (((namesa,eopta), iicommaa), ((namesb,eoptb),iicommab)) -> + let sa = str_of_name namesa in + let sb = str_of_name namesb in sa =$= sb && + (* todo ? eopta and b can have some info so ok to use =*= ? *) eopta =*= eoptb ) ) >&&> @@ -190,7 +214,7 @@ and typeC tya tyb = | StructUnion (sua, saopt, sta), StructUnion (sub, sbopt, stb) -> - (sua =*= sub && saopt =*= sbopt && List.length sta = List.length stb) + (sua =*= sub && saopt =*= sbopt && List.length sta =|= List.length stb) >&&> Common.zip sta stb +> List.fold_left (fun acc ((xfielda, iia), (xfieldb, iib)) -> @@ -208,20 +232,21 @@ and typeC tya tyb = (fun acc2 ((fielda,iia),(fieldb,iib))-> let iix = iia in acc2 >>= (fun xs -> - let (fa, ii2a) = fielda in - let (fb, ii2b) = fieldb in - let ii2x = ii2a in - match fa, fb with - | Simple (saopt, ta), Simple (sbopt, tb) -> - saopt =*= sbopt >&&> + match fielda, fieldb with + | Simple (nameaopt, ta), Simple (namebopt, tb) -> + + + same_s nameaopt namebopt >&&> fullType ta tb >>= (fun tx -> - return (((Simple (saopt, tx), ii2x), iix)::xs) + return (((Simple (nameaopt, tx)), iix)::xs) ) - | BitField (sopta, ta, ea), BitField (soptb, tb, eb) -> - (sopta =*= soptb && ea =*= eb) >&&> + | BitField (nameopta, ta, infoa, ea), + BitField (nameoptb, tb, infob, eb) -> + let infox = infoa in + (same_s nameopta nameoptb && ea =*= eb) >&&> fullType ta tb >>= (fun tx -> - return (((BitField (sopta,tx,ea), ii2x), iix)::xs) + return (((BitField (nameopta,tx,infox,ea)), iix)::xs) ) | _,_ -> fail ) @@ -246,14 +271,14 @@ and typeC tya tyb = * must put iib and not iix, because we want the token corresponding * to the typedef. *) - | TypeName (s, Some a), _ -> + | TypeName (name, Some a), _ -> fullType a (Ast_c.nQ, tyb) >>= (fun x -> - return (TypeName (s, Some x), iia) + return (TypeName (name, Some x), iia) ) - | _, TypeName (s, Some b) -> + | _, TypeName (name, Some b) -> fullType b (Ast_c.nQ, tya) >>= (fun x -> - return (TypeName (s, Some x), iib) (* subtil: *) + return (TypeName (name, Some x), iib) (* subtil: *) ) | _, _ -> fail diff --git a/engine/cocci_vs_c.ml b/engine/cocci_vs_c.ml index 933f16e..dd17d4b 100644 --- a/engine/cocci_vs_c.ml +++ b/engine/cocci_vs_c.ml @@ -18,8 +18,6 @@ * The authors reserve the right to distribute this or future versions of * Coccinelle under other licenses. *) - - open Common module A = Ast_cocci @@ -140,7 +138,7 @@ let generalize_mcode ia = (* 0x0 is equivalent to 0, value format isomorphism *) let equal_c_int s1 s2 = try - int_of_string s1 = int_of_string s2 + int_of_string s1 =|= int_of_string s2 with Failure("int_of_string") -> s1 =$= s2 @@ -281,7 +279,7 @@ let equal_metavarval valu valu' = (function (fla,cea,posa1,posa2) -> List.exists (function (flb,ceb,posb1,posb2) -> - fla = flb && cea = ceb && + fla =$= flb && cea =$= ceb && Ast_c.equal_posl posa1 posb1 && Ast_c.equal_posl posa2 posb2) l2) l1 @@ -309,58 +307,45 @@ let split_signb_baseb_ii (baseb, ii) = | B.IntType (B.CChar), ["char",i1] -> None, [i1] - | B.IntType (B.Si (sign, base)), xs -> - (match sign, base, xs with - | B.Signed, B.CChar2, ["signed",i1;"char",i2] -> - Some (B.Signed, i1), [i2] - | B.UnSigned, B.CChar2, ["unsigned",i1;"char",i2] -> - Some (B.UnSigned, i1), [i2] - - | B.Signed, B.CShort, ["short",i1] -> - None, [i1] - | B.Signed, B.CShort, ["signed",i1;"short",i2] -> - Some (B.Signed, i1), [i2] - | B.UnSigned, B.CShort, ["unsigned",i1;"short",i2] -> - Some (B.UnSigned, i1), [i2] - | B.Signed, B.CShort, ["short",i1;"int",i2] -> - None, [i1;i2] - - | B.Signed, B.CInt, ["int",i1] -> - None, [i1] - | B.Signed, B.CInt, ["signed",i1;"int",i2] -> - Some (B.Signed, i1), [i2] - | B.UnSigned, B.CInt, ["unsigned",i1;"int",i2] -> - Some (B.UnSigned, i1), [i2] - - | B.Signed, B.CInt, ["signed",i1;] -> - Some (B.Signed, i1), [] - | B.UnSigned, B.CInt, ["unsigned",i1;] -> - Some (B.UnSigned, i1), [] - - | B.Signed, B.CLong, ["long",i1] -> - None, [i1] - | B.Signed, B.CLong, ["long",i1;"int",i2] -> - None, [i1;i2] - | B.Signed, B.CLong, ["signed",i1;"long",i2] -> - Some (B.Signed, i1), [i2] - | B.UnSigned, B.CLong, ["unsigned",i1;"long",i2] -> - Some (B.UnSigned, i1), [i2] - - | B.Signed, B.CLongLong, ["long",i1;"long",i2] -> None, [i1;i2] - | B.Signed, B.CLongLong, ["signed",i1;"long",i2;"long",i3] -> - Some (B.Signed, i1), [i2;i3] - | B.UnSigned, B.CLongLong, ["unsigned",i1;"long",i2;"long",i3] -> - Some (B.UnSigned, i1), [i2;i3] - - - | B.UnSigned, B.CShort, ["unsigned",i1;"short",i2; "int", i3] -> - Some (B.UnSigned, i1), [i2;i3] - - - - | _ -> failwith "strange type1, maybe because of weird order" - ) - | _ -> failwith "strange type2, maybe because of weird order" + | B.IntType (B.Si (sign, base)), xs -> + let (signed,rest) = + match (sign,xs) with + (_,[]) -> None,[] + | (B.Signed,(("signed",i1)::rest)) -> (Some (B.Signed,i1),rest) + | (B.Signed,rest) -> (None,rest) + | (B.UnSigned,(("unsigned",i1)::rest)) -> (Some (B.UnSigned,i1),rest) + | (B.UnSigned,rest) -> (* is this case possible? *) (None,rest) in + (* The original code only allowed explicit signed and unsigned for char, + while this code allows char by itself. Not sure that needs to be + checked for here. If it does, then add a special case. *) + let base_res = + match (base,rest) with + B.CInt, ["int",i1] -> [i1] + | B.CInt, [] -> [] + + | B.CInt, ["",i1] -> (* no type is specified at all *) + (match i1.B.pinfo with + B.FakeTok(_,_) -> [] + | _ -> failwith ("unrecognized signed int: "^ + (String.concat " "(List.map fst iis)))) + + | B.CChar2, ["char",i2] -> [i2] + + | B.CShort, ["short",i1] -> [i1] + | B.CShort, ["short",i1;"int",i2] -> [i1;i2] + + | B.CLong, ["long",i1] -> [i1] + | B.CLong, ["long",i1;"int",i2] -> [i1;i2] + + | B.CLongLong, ["long",i1;"long",i2] -> [i1;i2] + | B.CLongLong, ["long",i1;"long",i2;"int",i3] -> [i1;i2;i3] + + | _ -> + failwith ("strange type1, maybe because of weird order: "^ + (String.concat " " (List.map fst iis))) in + (signed,base_res) + | _ -> failwith ("strange type2, maybe because of weird order: "^ + (String.concat " " (List.map fst iis))) (*---------------------------------------------------------------------------*) @@ -450,9 +435,10 @@ let initialisation_to_affectation decl = iisep) = x in (match var with - | Some ((s, ini), iis::iini) -> - (match ini with - | Some (B.InitExpr e, ii_empty2) -> + | Some (name, iniopt) -> + (match iniopt with + | Some (iini, (B.InitExpr e, ii_empty2)) -> + let iis = Ast_c.info_of_name name in let local = match local with Ast_c.NotLocalDecl -> Ast_c.NotLocalVar @@ -461,10 +447,11 @@ let initialisation_to_affectation decl = let typ = ref (Some ((Lib_parsing_c.al_type returnType),local), Ast_c.NotTest) in - let id = (B.Ident s, typ),[iis] in + let ident = name in + let idexpr = (B.Ident (ident), typ),Ast_c.noii in F.DefineExpr - ((B.Assignment (id, B.SimpleAssign, e), - Ast_c.noType()), iini) + ((B.Assignment (idexpr, B.SimpleAssign, e), + Ast_c.noType()), [iini]) | _ -> F.Decl decl ) | _ -> F.Decl decl @@ -659,7 +646,7 @@ let rec (expression: (A.expression, Ast_c.expression) matcher) = (* old: before have a MetaConst. Now we factorize and use 'form' to * differentiate between different cases *) let rec matches_id = function - B.Ident(c) -> true + B.Ident(name) -> true | B.Cast(ty,e) -> matches_id (B.unwrap_expr e) | _ -> false in let form_ok = @@ -668,9 +655,14 @@ let rec (expression: (A.expression, Ast_c.expression) matcher) = | (A.CONST,e) -> let rec matches = function B.Constant(c) -> true - | B.Ident idb when idb =~ "^[A-Z_][A-Z_0-9]*$" -> - pr2_once ("warning: I consider " ^ idb ^ " as a constant"); - true + | B.Ident (nameidb) -> + let s = Ast_c.str_of_name nameidb in + if s =~ "^[A-Z_][A-Z_0-9]*$" + then begin + pr2_once ("warning: I consider " ^ s ^ " as a constant"); + true + end + else false | B.Cast(ty,e) -> matches (B.unwrap_expr e) | B.Unary(e,B.UnMinus) -> matches (B.unwrap_expr e) | B.SizeOfExpr(exp) -> true @@ -740,12 +732,12 @@ let rec (expression: (A.expression, Ast_c.expression) matcher) = | A.Edots (_, Some expr), _ -> failwith "not handling when on Edots" - | A.Ident ida, ((B.Ident idb, typ),ii) -> - let ib1 = tuple_of_list1 ii in - ident DontKnow ida (idb, ib1) >>= (fun ida (idb, ib1) -> + | A.Ident ida, ((B.Ident (nameidb), typ),noii) -> + assert (null noii); + ident_cpp DontKnow ida nameidb >>= (fun ida nameidb -> return ( ((A.Ident ida)) +> wa, - ((B.Ident idb, typ),[ib1]) + ((B.Ident (nameidb), typ),Ast_c.noii) )) @@ -963,25 +955,25 @@ let rec (expression: (A.expression, Ast_c.expression) matcher) = (* todo?: handle some isomorphisms here ? *) | A.RecordAccess (ea, ia1, ida), ((B.RecordAccess (eb, idb), typ),ii) -> - let (ib1, ib2) = tuple_of_list2 ii in - ident DontKnow ida (idb, ib2) >>= (fun ida (idb, ib2) -> + let (ib1) = tuple_of_list1 ii in + ident_cpp DontKnow ida idb >>= (fun ida idb -> tokenf ia1 ib1 >>= (fun ia1 ib1 -> expression ea eb >>= (fun ea eb -> return ( ((A.RecordAccess (ea, ia1, ida))) +> wa, - ((B.RecordAccess (eb, idb), typ), [ib1;ib2]) + ((B.RecordAccess (eb, idb), typ), [ib1]) )))) | A.RecordPtAccess (ea,ia1,ida),((B.RecordPtAccess (eb, idb), typ), ii) -> - let (ib1, ib2) = tuple_of_list2 ii in - ident DontKnow ida (idb, ib2) >>= (fun ida (idb, ib2) -> + let (ib1) = tuple_of_list1 ii in + ident_cpp DontKnow ida idb >>= (fun ida idb -> tokenf ia1 ib1 >>= (fun ia1 ib1 -> expression ea eb >>= (fun ea eb -> return ( ((A.RecordPtAccess (ea, ia1, ida))) +> wa, - ((B.RecordPtAccess (eb, idb), typ), [ib1;ib2]) + ((B.RecordPtAccess (eb, idb), typ), [ib1]) )))) @@ -1092,6 +1084,19 @@ let rec (expression: (A.expression, Ast_c.expression) matcher) = (* ------------------------------------------------------------------------- *) +and (ident_cpp: info_ident -> (A.ident, B.name) matcher) = + fun infoidb ida idb -> + match idb with + | B.RegularName (s, iis) -> + let iis = tuple_of_list1 iis in + ident infoidb ida (s, iis) >>= (fun ida (s,iis) -> + return ( + ida, + (B.RegularName (s, [iis])) + )) + | B.CppConcatenatedName _ | B.CppVariadicName _ |B.CppIdentBuilder _ + -> raise Todo + and (ident: info_ident -> (A.ident, string * Ast_c.info) matcher) = fun infoidb ida ((idb, iib) as ib) -> X.all_bound (A.get_inherited ida) >&&> @@ -1212,7 +1217,7 @@ and arguments_bis = fun eas ebs -> * for the associated ',' see below how we handle the EComma * to match nothing. *) - (if startxs = [] + (if null startxs then if mcode_contain_plus (mcodekind mcode) then fail @@ -1261,7 +1266,7 @@ and arguments_bis = fun eas ebs -> startendxs +> List.fold_left (fun acc (startxs, endxs) -> acc >||> ( let ok = - if startxs = [] + if null startxs then if mcode_contain_plus (mcodekind ida) then false @@ -1293,7 +1298,7 @@ and arguments_bis = fun eas ebs -> X.envf keep inherited (ida, Ast_c.MetaExprListVal startxs', max_min) (fun () -> - if startxs = [] + if null startxs then return (ida, []) else X.distrf_args ida (Ast_c.split_comma startxs') ) @@ -1322,21 +1327,25 @@ and arguments_bis = fun eas ebs -> and argument arga argb = X.all_bound (A.get_inherited arga) >&&> match A.unwrap arga, argb with - | A.TypeExp tya, Right (B.ArgType (((b, sopt, tyb), ii_b_s))) -> + | A.TypeExp tya, + Right (B.ArgType {B.p_register=b,iib; p_namei=sopt;p_type=tyb}) -> if b || sopt <> None then (* failwith "the argument have a storage and ast_cocci does not have"*) fail else + (* b = false and sopt = None *) fullType tya tyb >>= (fun tya tyb -> return ( (A.TypeExp tya) +> A.rewrap arga, - (Right (B.ArgType (((b, sopt, tyb), ii_b_s)))) + (Right (B.ArgType {B.p_register=(b,iib); + p_namei=sopt; + p_type=tyb;})) )) | A.TypeExp tya, _ -> fail - | _, Right (B.ArgType (tyb, sto_iisto)) -> fail + | _, Right (B.ArgType _) -> fail | _, Left argb -> expression arga argb >>= (fun arga argb -> return (arga, Left argb) @@ -1374,7 +1383,7 @@ and parameters_bis eas ebs = startendxs +> List.fold_left (fun acc (startxs, endxs) -> acc >||> ( - (if startxs = [] + (if null startxs then if mcode_contain_plus (mcodekind mcode) then fail @@ -1418,7 +1427,7 @@ and parameters_bis eas ebs = startendxs +> List.fold_left (fun acc (startxs, endxs) -> acc >||> ( let ok = - if startxs = [] + if null startxs then if mcode_contain_plus (mcodekind ida) then false @@ -1450,7 +1459,7 @@ and parameters_bis eas ebs = X.envf keep inherited (ida, Ast_c.MetaParamListVal startxs', max_min) (fun () -> - if startxs = [] + if null startxs then return (ida, []) else X.distrf_params ida (Ast_c.split_comma startxs') ) >>= (fun ida startxs -> @@ -1468,15 +1477,20 @@ and parameters_bis eas ebs = | A.VoidParam ta, ys -> (match eas, ebs with | [], [Left eb] -> - let ((hasreg, idbopt, tb), ii_b_s) = eb in - if idbopt = None && null ii_b_s + let {B.p_register=(hasreg,iihasreg); + p_namei = idbopt; + p_type=tb; } = eb in + + if idbopt =*= None && not hasreg then match tb with | (qub, (B.BaseType B.Void,_)) -> fullType ta tb >>= (fun ta tb -> return ( [(A.VoidParam ta) +> A.rewrap ea], - [Left ((hasreg, idbopt, tb), ii_b_s)] + [Left {B.p_register=(hasreg, iihasreg); + p_namei = idbopt; + p_type = tb;}] )) | _ -> fail else fail @@ -1518,23 +1532,40 @@ and parameters_bis eas ebs = +(* +let split_register_param = fun (hasreg, idb, ii_b_s) -> + match hasreg, idb, ii_b_s with + | false, Some s, [i1] -> Left (s, [], i1) + | true, Some s, [i1;i2] -> Left (s, [i1], i2) + | _, None, ii -> Right ii + | _ -> raise Impossible +*) + + +and parameter = fun (idaopt, typa) paramb -> + let {B.p_register = (hasreg,iihasreg); + p_namei = nameidbopt; + p_type = typb;} = paramb in -and parameter = fun (idaopt, typa) ((hasreg, idbopt, typb), ii_b_s) -> fullType typa typb >>= (fun typa typb -> - match idaopt, Ast_c.split_register_param (hasreg, idbopt, ii_b_s) with - | Some ida, Left (idb, iihasreg, iidb) -> + match idaopt, nameidbopt with + | Some ida, Some nameidb -> (* todo: if minus on ida, should also minus the iihasreg ? *) - ident DontKnow ida (idb,iidb) >>= (fun ida (idb,iidb) -> + ident_cpp DontKnow ida nameidb >>= (fun ida nameidb -> return ( (Some ida, typa), - ((hasreg, Some idb, typb), iihasreg++[iidb]) + {B.p_register = (hasreg, iihasreg); + p_namei = Some (nameidb); + p_type = typb} )) - | None, Right iihasreg -> + | None, None -> return ( (None, typa), - ((hasreg, None, typb), iihasreg) + {B.p_register=(hasreg,iihasreg); + p_namei = None; + p_type = typb;} ) @@ -1550,8 +1581,8 @@ and parameter = fun (idaopt, typa) ((hasreg, idbopt, typb), ii_b_s) -> ) *) - | Some _, Right _ -> fail - | None, Left _ -> fail + | Some _, None -> fail + | None, Some _ -> fail ) @@ -1590,7 +1621,7 @@ and (declaration: (A.mcodekind * bool * A.declaration,B.declaration) matcher) = ))) | _, (B.DeclList (xs, iiptvirgb::iifakestart::iisto)) -> - if X.mode = PatternMode + if X.mode =*= PatternMode then xs +> List.fold_left (fun acc var -> acc >||> ( @@ -1644,7 +1675,7 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> * T { }; that we want to match against typedef struct { } xx_t; *) | A.TyDecl (tya0, ptvirga), - ({B.v_namei = Some ((idb, None),[iidb]); + ({B.v_namei = Some (nameidb, None); B.v_type = typb0; B.v_storage = (B.StoTypedef, inl); B.v_local = local; @@ -1666,7 +1697,7 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> | Some s -> pr2 (sprintf "warning: both a typedef (%s) and struct name introduction (%s)" - idb s + (Ast_c.str_of_name nameidb) s ); pr2 "warning: I will consider only the typedef"; let (iisub, iisb, lbb, rbb) = tuple_of_list4 ii in @@ -1677,8 +1708,8 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> (Ast_c.nQ, (B.StructUnion (sub, sbopt, declsb), ii)) in let fake_typeb = - Ast_c.nQ,((B.TypeName (idb, Some - (Lib_parsing_c.al_type structnameb))), [iidb]) + Ast_c.nQ,((B.TypeName (nameidb, Some + (Lib_parsing_c.al_type structnameb))), []) in tokenf ptvirga iiptvirgb >>= (fun ptvirga iiptvirgb -> @@ -1703,11 +1734,11 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> let typb0 = ((qu, il), typb1) in match fake_typeb with - | _nQ, ((B.TypeName (idb,_typ)), [iidb]) -> + | _nQ, ((B.TypeName (nameidb, _typ)),[]) -> return ( (A.TyDecl (tya0, ptvirga)) +> A.rewrap decla, - (({B.v_namei = Some ((idb, None),[iidb]); + (({B.v_namei = Some (nameidb, None); B.v_type = typb0; B.v_storage = (B.StoTypedef, inl); B.v_local = local; @@ -1735,7 +1766,7 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> return ( (A.TyDecl (tya0, ptvirga)) +> A.rewrap decla, - (({B.v_namei = Some ((idb, None),[iidb]); + (({B.v_namei = Some (nameidb, None); B.v_type = typb0; B.v_storage = (B.StoTypedef, inl); B.v_local = local; @@ -1755,22 +1786,18 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> ) | A.UnInit (stoa, typa, ida, ptvirga), - ({B.v_namei = Some ((idb, _),[iidb]); - B.v_storage = (B.StoTypedef,_); - }, iivirg) -> - fail + ({B.v_namei= Some (nameidb, _);B.v_storage= (B.StoTypedef,_);}, iivirg) + -> fail | A.Init (stoa, typa, ida, eqa, inia, ptvirga), - ({B.v_namei = Some ((idb, _),[iidb]); - B.v_storage = (B.StoTypedef,_); - }, iivirg) -> - fail + ({B.v_namei=Some(nameidb, _);B.v_storage=(B.StoTypedef,_);}, iivirg) + -> fail (* could handle iso here but handled in standard.iso *) | A.UnInit (stoa, typa, ida, ptvirga), - ({B.v_namei = Some ((idb, None),[iidb]); + ({B.v_namei = Some (nameidb, None); B.v_type = typb; B.v_storage = stob; B.v_local = local; @@ -1779,12 +1806,12 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> tokenf ptvirga iiptvirgb >>= (fun ptvirga iiptvirgb -> fullType typa typb >>= (fun typa typb -> - ident DontKnow ida (idb, iidb) >>= (fun ida (idb, iidb) -> + ident_cpp DontKnow ida nameidb >>= (fun ida nameidb -> storage_optional_allminus allminus stoa (stob, iistob) >>= (fun stoa (stob, iistob) -> return ( (A.UnInit (stoa, typa, ida, ptvirga)) +> A.rewrap decla, - (({B.v_namei = Some ((idb,None),[iidb]); + (({B.v_namei = Some (nameidb, None); B.v_type = typb; B.v_storage = stob; B.v_local = local; @@ -1794,7 +1821,7 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> ))))) | A.Init (stoa, typa, ida, eqa, inia, ptvirga), - ({B.v_namei = Some((idb,Some inib),[iidb;iieqb]); + ({B.v_namei = Some(nameidb, Some (iieqb, inib)); B.v_type = typb; B.v_storage = stob; B.v_local = local; @@ -1804,13 +1831,13 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> tokenf ptvirga iiptvirgb >>= (fun ptvirga iiptvirgb -> tokenf eqa iieqb >>= (fun eqa iieqb -> fullType typa typb >>= (fun typa typb -> - ident DontKnow ida (idb, iidb) >>= (fun ida (idb, iidb) -> + ident_cpp DontKnow ida nameidb >>= (fun ida nameidb -> storage_optional_allminus allminus stoa (stob, iistob) >>= (fun stoa (stob, iistob) -> initialiser inia inib >>= (fun inia inib -> return ( (A.Init (stoa, typa, ida, eqa, inia, ptvirga)) +> A.rewrap decla, - (({B.v_namei = Some((idb,Some inib),[iidb;iieqb]); + (({B.v_namei = Some(nameidb, Some (iieqb, inib)); B.v_type = typb; B.v_storage = stob; B.v_local = local; @@ -1827,7 +1854,7 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> B.v_attr = attrs; }, iivirg) -> - if stob = (B.NoSto, false) + if stob =*= (B.NoSto, false) then tokenf ptvirga iiptvirgb >>= (fun ptvirga iiptvirgb -> fullType typa typb >>= (fun typa typb -> @@ -1844,7 +1871,7 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> | A.Typedef (stoa, typa, ida, ptvirga), - ({B.v_namei = Some ((idb, None),[iidb]); + ({B.v_namei = Some (nameidb, None); B.v_type = typb; B.v_storage = (B.StoTypedef,inline); B.v_local = local; @@ -1864,30 +1891,39 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> | A.MetaType(_,_,_) -> let fake_typeb = - Ast_c.nQ, ((B.TypeName (idb, Ast_c.noTypedefDef())), [iidb]) + Ast_c.nQ, ((B.TypeName (nameidb, Ast_c.noTypedefDef())), []) in fullTypebis ida fake_typeb >>= (fun ida fake_typeb -> match fake_typeb with - | _nQ, ((B.TypeName (idb,_typ)), [iidb]) -> - return (ida, (idb, iidb)) + | _nQ, ((B.TypeName (nameidb, _typ)), []) -> + return (ida, nameidb) | _ -> raise Impossible ) | A.TypeName sa -> - if (term sa) =$= idb - then - tokenf sa iidb >>= (fun sa iidb -> - return ( - (A.TypeName sa) +> A.rewrap ida, - (idb, iidb) - )) - else fail + (match nameidb with + | B.RegularName (sb, iidb) -> + let iidb1 = tuple_of_list1 iidb in + + if (term sa) =$= sb + then + tokenf sa iidb1 >>= (fun sa iidb1 -> + return ( + (A.TypeName sa) +> A.rewrap ida, + B.RegularName (sb, [iidb1]) + )) + else fail + + | B.CppConcatenatedName _ | B.CppVariadicName _ |B.CppIdentBuilder _ + -> raise Todo + ) + | _ -> raise Impossible - ) >>= (fun ida (idb, iidb) -> + ) >>= (fun ida nameidb -> return ( (A.Typedef (stoa, typa, ida, ptvirga)) +> A.rewrap decla, - (({B.v_namei = Some ((idb, None),[iidb]); + (({B.v_namei = Some (nameidb, None); B.v_type = typb; B.v_storage = (B.StoTypedef,inline); B.v_local = local; @@ -1921,8 +1957,8 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) -> | A.OptDecl _, _ | A.UniqueDecl _, _ -> failwith "not handling Opt/Unique Decl" - | _, ({B.v_namei=Some _}, _) - -> fail + | _, ({B.v_namei=Some _}, _) -> + fail @@ -2165,7 +2201,7 @@ and (struct_fields: (A.declaration list, B.field list) matcher) = startendxs +> List.fold_left (fun acc (startxs, endxs) -> acc >||> ( - (if startxs = [] + (if null startxs then if mcode_contain_plus (mcodekind mcode) then fail @@ -2205,21 +2241,20 @@ and (struct_field: (A.declaration, B.field) matcher) = fun fa fb -> | [onevar,iivirg] -> assert (null iivirg); (match onevar with - | B.BitField (sopt, typb, expr), ii -> + | B.BitField (sopt, typb, _, expr) -> pr2_once "warning: bitfield not handled by ast_cocci"; fail - | B.Simple (None, typb), ii -> + | B.Simple (None, typb) -> pr2_once "warning: unamed struct field not handled by ast_cocci"; fail - | B.Simple (Some idb, typb), ii -> - let (iidb) = tuple_of_list1 ii in + | B.Simple (Some nameidb, typb) -> (* build a declaration from a struct field *) let allminus = false in let iisto = [] in let stob = B.NoSto, false in let fake_var = - ({B.v_namei = Some ((idb, None),[iidb]); + ({B.v_namei = Some (nameidb, None); B.v_type = typb; B.v_storage = stob; B.v_local = Ast_c.NotLocalDecl; @@ -2231,11 +2266,12 @@ and (struct_field: (A.declaration, B.field) matcher) = fun fa fb -> (fun fa (var,iiptvirgb,iisto) -> match fake_var with - | ({B.v_namei = Some ((idb, None),[iidb]); + | ({B.v_namei = Some (nameidb, None); B.v_type = typb; B.v_storage = stob; }, iivirg) -> - let onevar = B.Simple (Some idb, typb), [iidb] in + + let onevar = B.Simple (Some nameidb, typb) in return ( (fa), @@ -2383,7 +2419,7 @@ and simulate_signed ta basea stringsa signaopt tb baseb ii rebuilda = | A.VoidType, B.Void | A.FloatType, B.FloatType (B.CFloat) | A.DoubleType, B.FloatType (B.CDouble) -> - assert (signaopt = None); + assert (signaopt =*= None); let stringa = tuple_of_list1 stringsa in let (ibaseb) = tuple_of_list1 ii in tokenf stringa ibaseb >>= (fun stringa ibaseb -> @@ -2392,7 +2428,7 @@ and simulate_signed ta basea stringsa signaopt tb baseb ii rebuilda = (B.BaseType baseb, [ibaseb]) )) - | A.CharType, B.IntType B.CChar when signaopt = None -> + | A.CharType, B.IntType B.CChar when signaopt =*= None -> let stringa = tuple_of_list1 stringsa in let ibaseb = tuple_of_list1 ii in tokenf stringa ibaseb >>= (fun stringa ibaseb -> @@ -2482,16 +2518,14 @@ and simulate_signed_meta ta basea signaopt tb baseb ii rebuilda = let match_to_type rebaseb = sign signaopt signbopt >>= (fun signaopt iisignbopt -> - let ibaseb = tuple_of_list1 iibaseb in let fta = A.rewrap basea (A.Type(None,basea)) in - let ftb = Ast_c.nQ,(B.BaseType (rebaseb), [ibaseb]) in + let ftb = Ast_c.nQ,(B.BaseType (rebaseb), iibaseb) in fullType fta ftb >>= (fun fta (_,tb) -> (match A.unwrap fta,tb with A.Type(_,basea), (B.BaseType baseb, ii) -> - let ibaseb = tuple_of_list1 ii in return ( (rebuilda (basea, signaopt)) +> A.rewrap ta, - (B.BaseType (baseb), iisignbopt ++ [ibaseb]) + (B.BaseType (baseb), iisignbopt ++ ii) ) | _ -> failwith "not possible"))) in @@ -2505,13 +2539,7 @@ and simulate_signed_meta ta basea signaopt tb baseb ii rebuilda = (match iibaseb with | [] -> fail (* metavariable has to match something *) - | [x;y] -> - pr2_once - "warning: long int or short int not handled by ast_cocci"; - fail - - | [ibaseb] -> match_to_type (B.IntType (B.Si (B.Signed, ty))) - | _ -> raise Impossible + | _ -> match_to_type (B.IntType (B.Si (B.Signed, ty))) ) @@ -2739,16 +2767,26 @@ and (typeC: (A.typeC, Ast_c.typeC) matcher) = * uint in the C code. But some CEs consists in renaming some types, * so we don't want apply isomorphisms every time. *) - | A.TypeName sa, (B.TypeName (sb,typb), ii) -> - let (isb) = tuple_of_list1 ii in - if (term sa) =$= sb - then - tokenf sa isb >>= (fun sa isb -> - return ( - (A.TypeName sa) +> A.rewrap ta, - (B.TypeName (sb,typb), [isb]) - )) - else fail + | A.TypeName sa, (B.TypeName (nameb, typb), noii) -> + assert (null noii); + + (match nameb with + | B.RegularName (sb, iidb) -> + let iidb1 = tuple_of_list1 iidb in + + if (term sa) =$= sb + then + tokenf sa iidb1 >>= (fun sa iidb1 -> + return ( + (A.TypeName sa) +> A.rewrap ta, + (B.TypeName (B.RegularName (sb, [iidb1]), typb), noii) + )) + else fail + + | B.CppConcatenatedName _ | B.CppVariadicName _ |B.CppIdentBuilder _ + -> raise Todo + ) + | _, (B.TypeOfExpr e, ii) -> fail | _, (B.TypeOfType e, ii) -> fail @@ -2766,7 +2804,7 @@ and (typeC: (A.typeC, Ast_c.typeC) matcher) = | _, (B.Enum _, _) -> fail (* todo cocci ?*) | _, - ((B.TypeName (_, _) | B.StructUnionName (_, _) | B.EnumName _ | + ((B.TypeName _ | B.StructUnionName (_, _) | B.EnumName _ | B.StructUnion (_, _, _) | B.FunctionType _ | B.Array (_, _) | B.Pointer _ | B.BaseType _), @@ -2867,9 +2905,9 @@ and compatible_base_type a signa b = match a, b with | Type_cocci.VoidType, B.Void -> - assert (signa = None); + assert (signa =*= None); ok - | Type_cocci.CharType, B.IntType B.CChar when signa = None -> + | Type_cocci.CharType, B.IntType B.CChar when signa =*= None -> ok | Type_cocci.CharType, B.IntType (B.Si (signb, B.CChar2)) -> compatible_sign signa signb @@ -2883,10 +2921,10 @@ and compatible_base_type a signa b = pr2_once "no longlong in cocci"; fail | Type_cocci.FloatType, B.FloatType B.CFloat -> - assert (signa = None); + assert (signa =*= None); ok | Type_cocci.DoubleType, B.FloatType B.CDouble -> - assert (signa = None); + assert (signa =*= None); ok | _, B.FloatType B.CLongDouble -> pr2_once "no longdouble in cocci"; @@ -2942,16 +2980,17 @@ and compatible_type a (b,local) = loop (a,b) | Type_cocci.StructUnionName (sua, _, sa), (qub, (B.StructUnionName (sub, sb),ii)) -> - if equal_structUnion_type_cocci sua sub && sa = sb + if equal_structUnion_type_cocci sua sub && sa =$= sb then ok else fail | Type_cocci.EnumName (_, sa), (qub, (B.EnumName (sb),ii)) -> - if sa = sb + if sa =$= sb then ok else fail - | Type_cocci.TypeName sa, (qub, (B.TypeName (sb,_typb), ii)) -> - if sa = sb + | Type_cocci.TypeName sa, (qub, (B.TypeName (namesb, _typb),noii)) -> + let sb = Ast_c.str_of_name namesb in + if sa =$= sb then ok else fail @@ -2980,7 +3019,7 @@ and compatible_type a (b,local) = ) (* subtil: must be after the MetaType case *) - | a, (qub, (B.TypeName (sb,Some b), ii)) -> + | a, (qub, (B.TypeName (_namesb, Some b), noii)) -> (* kind of typedef iso *) loop (a,b) @@ -3052,7 +3091,7 @@ and inc_file (a, before_after) (b, h_rel_pos) = | _, None -> false ) - | (A.IncPath x)::xs, y::ys -> x = y && aux_inc (xs, ys) (x::passed) + | (A.IncPath x)::xs, y::ys -> x =$= y && aux_inc (xs, ys) (x::passed) | _ -> failwith "IncDots not in last place or other pb" in @@ -3093,7 +3132,7 @@ and define_paramsbis = fun eas ebs -> startendxs +> List.fold_left (fun acc (startxs, endxs) -> acc >||> ( - (if startxs = [] + (if null startxs then if mcode_contain_plus (mcodekind mcode) then fail @@ -3185,7 +3224,7 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = | F.CaseNode _ | F.TrueNode | F.FalseNode | F.AfterNode | F.FallThroughNode | F.InLoopNode -> - if X.mode = PatternMode + if X.mode =*= PatternMode then return default else if mcode_contain_plus (mcodekind mcode) @@ -3194,7 +3233,7 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = else return default | F.EndStatement None -> - if X.mode = PatternMode then return default + if X.mode =*= PatternMode then return default else (* DEAD CODE NOW ? only useful in -no_cocci_vs_c_3 ? if mcode_contain_plus (mcodekind mcode) @@ -3214,10 +3253,10 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = )) | F.FunHeader _ -> - if X.mode = PatternMode then return default + if X.mode =*= PatternMode then return default else failwith "a MetaRuleElem can't transform a headfunc" | _n -> - if X.mode = PatternMode then return default + if X.mode =*= PatternMode then return default else X.distrf_node (generalize_mcode mcode) node >>= (fun mcode node -> return ( @@ -3358,7 +3397,7 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = | A.FunHeader (mckstart, allminus, fninfoa, ida, oparen, paramsa, cparen), - F.FunHeader ({B.f_name = idb; + F.FunHeader ({B.f_name = nameidb; f_type = (retb, (paramsb, (isvaargs, iidotsb))); f_storage = stob; f_attr = attrs; @@ -3389,13 +3428,13 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = with [A.FAttr(a)] -> failwith "not checking attributes" | _ -> ()); (match ii with - | iidb::ioparenb::icparenb::iifakestart::iistob -> + | ioparenb::icparenb::iifakestart::iistob -> (* maybe important to put ident as the first tokens to transform. * It's related to transform_proto. So don't change order * between the >>=. *) - ident LocalFunction ida (idb, iidb) >>= (fun ida (idb, iidb) -> + ident_cpp LocalFunction ida nameidb >>= (fun ida nameidb -> X.tokenf_mck mckstart iifakestart >>= (fun mckstart iifakestart -> tokenf oparen ioparenb >>= (fun oparen ioparenb -> tokenf cparen icparenb >>= (fun cparen icparenb -> @@ -3427,14 +3466,14 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = return ( A.FunHeader(mckstart,allminus,fninfoa,ida,oparen, paramsa,cparen), - F.FunHeader ({B.f_name = idb; + F.FunHeader ({B.f_name = nameidb; f_type = (retb, (paramsb, (isvaargs, iidotsb))); f_storage = stob; f_attr = attrs; f_body = body; f_old_c_style = oldstyle; (* TODO *) }, - iidb::ioparenb::icparenb::iifakestart::iistob) + ioparenb::icparenb::iifakestart::iistob) ) )))))))) | _ -> raise Impossible @@ -3619,7 +3658,7 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = B.i_is_in_ifdef = inifdef; B.i_content = copt; } -> - assert (copt = None); + assert (copt =*= None); let include_requirment = match mcodekind incla, mcodekind filea with @@ -3709,30 +3748,27 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = | _, F.ExprStatement (_, (None, ii)) -> fail (* happen ? *) - | A.Label(id,dd), F.Label (st,(s,ii)) -> - let (ib1,ib2) = tuple_of_list2 ii in - let (string_of_id,rebuild) = - match A.unwrap id with - A.Id(s) -> (s,function s -> A.rewrap id (A.Id(s))) - | _ -> failwith "labels with metavariables not supported" in - if (term string_of_id) =$= s - then - tokenf string_of_id ib1 >>= (fun string_of_id ib1 -> + | A.Label(id,dd), F.Label (st, nameb, ((),ii)) -> + let (ib2) = tuple_of_list1 ii in + (match A.unwrap id with + | A.Id(_s) -> + ident_cpp DontKnow id nameb >>= (fun ida nameb -> tokenf dd ib2 >>= (fun dd ib2 -> return ( - A.Label(rebuild string_of_id,dd), - F.Label (st,(s,[ib1;ib2])) + A.Label (ida,dd), + F.Label (st,nameb, ((),[ib2])) ))) - else fail + | _ -> failwith "labels with metavariables not supported" + ) - | A.Goto(goto,id,sem), F.Goto (st,(s,ii)) -> - let (ib1,ib2,ib3) = tuple_of_list3 ii in + | A.Goto(goto,id,sem), F.Goto (st,nameb, ((),ii)) -> + let (ib1,ib3) = tuple_of_list2 ii in tokenf goto ib1 >>= (fun goto ib1 -> - ident DontKnow id (s, ib2) >>= (fun id (s, ib2) -> + ident_cpp DontKnow id nameb >>= (fun id nameb -> tokenf sem ib3 >>= (fun sem ib3 -> return( A.Goto(goto,id,sem), - F.Goto (st,(s,[ib1;ib2;ib3])) + F.Goto (st,nameb, ((),[ib1;ib3])) )))) (* have not a counter part in coccinelle, for the moment *) @@ -3749,7 +3785,7 @@ let rec (rule_elem_node: (A.rule_elem, Control_flow_c.node) matcher) = (F.MacroStmt (_, _)| F.DefineDoWhileZeroHeader _| F.EndNode|F.TopNode) -> fail | _, - (F.Label (_, _)|F.Break (_, _)|F.Continue (_, _)|F.Default (_, _)| + (F.Label (_, _, _)|F.Break (_, _)|F.Continue (_, _)|F.Default (_, _)| F.Case (_, _)|F.Include _|F.Goto _|F.ExprStatement _| F.DefineType _|F.DefineExpr _|F.DefineTodo| F.DefineHeader (_, _)|F.ReturnExpr (_, _)|F.Return (_, _)|F.MacroIterHeader (_, _)| diff --git a/engine/ctlcocci_integration.ml b/engine/ctlcocci_integration.ml index 65403a6..c9c3d02 100644 --- a/engine/ctlcocci_integration.ml +++ b/engine/ctlcocci_integration.ml @@ -137,7 +137,7 @@ let (labels_for_ctl: string list (* dropped isos *) -> | Lib_engine.Top, F.TopNode -> [nodei, (p,[])] | Lib_engine.Exit, F.Exit -> [nodei, (p,[])] | Lib_engine.ErrorExit, F.ErrorExit -> [nodei, (p,[])] - | Lib_engine.Goto, F.Goto(_,_) -> [nodei, (p,[])] + | Lib_engine.Goto, F.Goto(_,_,_) -> [nodei, (p,[])] | Lib_engine.InLoop , _ -> [] | Lib_engine.TrueBranch , _ -> [] @@ -213,15 +213,15 @@ let (fix_flow_ctl2: F.cflow -> F.cflow) = fun flow -> (* for the #define CFG who have no Exit but have at least a EndNode *) (try - let endi = F.find_node (fun x -> x = F.EndNode) !g in + let endi = F.find_node (fun x -> x =*= F.EndNode) !g in !g#add_arc ((endi, endi), F.Direct); with Not_found -> () ); (* for the regular functions *) (try - let exitnodei = F.find_node (fun x -> x = F.Exit) !g in - let errornodei = F.find_node (fun x -> x = F.ErrorExit) !g in + let exitnodei = F.find_node (fun x -> x =*= F.Exit) !g in + let errornodei = F.find_node (fun x -> x =*= F.ErrorExit) !g in !g#add_arc ((exitnodei, exitnodei), F.Direct); @@ -293,7 +293,7 @@ module ENV = struct type value = Lib_engine.metavar_binding_kind2 type mvar = Ast_cocci.meta_name - let eq_mvar x x' = x = x' + let eq_mvar x x' = x =*= x' let eq_val v v' = (* v = v' *) match (v,v') with @@ -304,7 +304,7 @@ module ENV = | (Lib_engine.NormalMetaVal(Ast_c.MetaTypeVal a), Lib_engine.NormalMetaVal(Ast_c.MetaTypeVal b)) -> C_vs_c.eq_type a b - | _ -> v = v' + | _ -> v =*= v' let merge_val v v' = (* values guaranteed to be compatible *) (* v *) match (v,v') with @@ -399,7 +399,7 @@ let (satbis_to_trans_info: let rec coalesce_positions = function [] -> [] | (x,Ast_c.MetaPosValList l)::rest -> - let (same,others) = List.partition (function (x1,_) -> x = x1) rest in + let (same,others) = List.partition (function (x1,_) -> x =*= x1) rest in let ls = List.concat (List.map diff --git a/engine/pattern_c.ml b/engine/pattern_c.ml index 445c8d6..32d69d4 100644 --- a/engine/pattern_c.ml +++ b/engine/pattern_c.ml @@ -18,8 +18,6 @@ * The authors reserve the right to distribute this or future versions of * Coccinelle under other licenses. *) - - open Common module Flag_engine = Flag_matcher @@ -250,10 +248,10 @@ module XMATCH = struct match mck with | Ast_cocci.PLUS -> Ast_cocci.PLUS | Ast_cocci.CONTEXT (pos, xs) -> - assert (pos = Ast_cocci.NoPos || pos = Ast_cocci.DontCarePos); + assert (pos =*= Ast_cocci.NoPos || pos =*= Ast_cocci.DontCarePos); Ast_cocci.CONTEXT (posmck, xs) | Ast_cocci.MINUS (pos, xs) -> - assert (pos = Ast_cocci.NoPos || pos = Ast_cocci.DontCarePos); + assert (pos =*= Ast_cocci.NoPos || pos =*= Ast_cocci.DontCarePos); Ast_cocci.MINUS (posmck, xs) diff --git a/engine/postprocess_transinfo.ml b/engine/postprocess_transinfo.ml index 564a278..0d07454 100644 --- a/engine/postprocess_transinfo.ml +++ b/engine/postprocess_transinfo.ml @@ -37,11 +37,17 @@ let get_extra _ = extra_counter := !extra_counter + 1; "__extra_counter__"^(string_of_int ctr) -let read_fresh_id () = +let get_seeded seed = + let ctr = !extra_counter in + extra_counter := !extra_counter + 1; + seed^(string_of_int ctr) + +let read_fresh_id _ = try let s = read_line () in match Parse_c.tokens_of_string s with [Parser_c.TIdent _; Parser_c.EOF _] -> s + | [Parser_c.EOF _] -> get_extra() | _ -> failwith ("wrong fresh id: " ^ s) with End_of_file -> get_extra() @@ -69,10 +75,13 @@ let process_tree inherited_env l = let new_triples = List.rev new_triples in let fresh_env = List.map - (function ((r,n) as fresh) -> - Printf.printf "%s: name for %s: " r n; (* not debugging code!!! *) - flush stdout; - (fresh,string2val(read_fresh_id()))) + (function + ((r,n) as fresh,None) -> + Printf.printf "%s: name for %s: " r n; (* not debugging code!!! *) + flush stdout; + (fresh,string2val(read_fresh_id())) + | ((r,n) as fresh,Some seed) -> + (fresh,string2val(get_seeded seed))) all_fresh in let (_,res) = List.split @@ -81,9 +90,10 @@ let process_tree inherited_env l = function (fresh,_) as elem -> List.map (function (freshs,((node,env,pred) as cur)) -> - if List.mem fresh freshs - then (freshs,(node,elem::env,pred)) - else (freshs,cur)) + try + let _ = List.assoc fresh freshs in + (freshs,(node,elem::env,pred)) + with Not_found -> (freshs,cur)) freshs_node_env_preds) (List.combine local_freshs new_triples) fresh_env) in diff --git a/engine/transformation_c.ml b/engine/transformation_c.ml index 44e6dfd..2e1077f 100644 --- a/engine/transformation_c.ml +++ b/engine/transformation_c.ml @@ -209,9 +209,9 @@ module XTRANS = struct ib | _ -> - if (oldmcode, oldenv) = (mck, tin.binding) + if (oldmcode, oldenv) =*= (mck, tin.binding) then begin - if !Flag_matcher.show_misc + if !Flag_matcher.show_misc then pr2 "already tagged but with same mcode, so safe"; ib end @@ -233,10 +233,13 @@ module XTRANS = struct Format.print_flush(); *) failwith - (Common.sprintf "%s: already tagged token:\n%s" - tin.extra.current_rule_name - (Common.error_message (Ast_c.file_of_info ib) - (Ast_c.str_of_info ib, Ast_c.opos_of_info ib))) + (match Ast_c.pinfo_of_info ib with + Ast_c.FakeTok _ -> "already tagged fake token" + | _ -> + Common.sprintf "%s: already tagged token:\n%s" + tin.extra.current_rule_name + (Common.error_message (Ast_c.file_of_info ib) + (Ast_c.str_of_info ib, Ast_c.opos_of_info ib))) end let tokenf ia ib = fun tin -> @@ -403,7 +406,7 @@ module XTRANS = struct (match get_pos mck with | Ast_cocci.DontCarePos -> true | Ast_cocci.FixPos (i1, i2) -> - i1 = min && i2 = max + i1 =*= min && i2 =*= max | _ -> raise Impossible ) @@ -439,7 +442,7 @@ module XTRANS = struct let envf keep _inherited = fun (s, value, _) f tin -> let s = Ast_cocci.unwrap_mcode s in let v = - if keep = Type_cocci.Saved + if keep =*= Type_cocci.Saved then ( try Some (List.assoc s tin.binding) with Not_found -> diff --git a/extra/.depend b/extra/.depend deleted file mode 100644 index 8c6112e..0000000 --- a/extra/.depend +++ /dev/null @@ -1,9 +0,0 @@ -classic_patch.cmi: ../commons/common.cmi -kbuild.cmi: ../commons/common.cmi -maintainers.cmi: ../commons/common.cmi -classic_patch.cmo: ../commons/common.cmi classic_patch.cmi -classic_patch.cmx: ../commons/common.cmx classic_patch.cmi -kbuild.cmo: ../commons/common.cmi kbuild.cmi -kbuild.cmx: ../commons/common.cmx kbuild.cmi -maintainers.cmo: ../commons/common.cmi maintainers.cmi -maintainers.cmx: ../commons/common.cmx maintainers.cmi diff --git a/extra/Makefile b/extra/Makefile index dc26e71..4ebb12d 100644 --- a/extra/Makefile +++ b/extra/Makefile @@ -4,12 +4,12 @@ TARGET=extra SOURCES = classic_patch.ml kbuild.ml maintainers.ml -SYSLIBS = str.cma unix.cma +SYSLIBS = str.cma unix.cma -LIBS=../commons/commons.cma ../parsing_c/parsing_c.cma ../globals/globals.cma +LIBS=../commons/commons.cma ../parsing_c/parsing_c.cma ../globals/globals.cma INCLUDES= -I ../commons -I ../globals -I ../parsing_cocci -I ../parsing_c -#for warning: -w A +#for warning: -w A #for profiling: -p -inline 0 with OCAMLOPT OCAMLCFLAGS ?= -g -dtypes OCAMLC =ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES) @@ -55,15 +55,16 @@ clean:: .ml.cmx: $(OCAMLOPT) -c $< -.ml.mldepend: +.ml.mldepend: $(OCAMLC) -i $< clean:: rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot - -clean:: rm -f *~ .*~ gmon.out #*# +distclean:: + rm -f .depend + beforedepend:: depend:: beforedepend diff --git a/extra/kbuild.ml b/extra/kbuild.ml index 10c4736..56be8fe 100644 --- a/extra/kbuild.ml +++ b/extra/kbuild.ml @@ -124,7 +124,7 @@ let parse_makefile file = | s when s =~ "obj-\\$(CONFIG_.*)[ \t]*[\\+:]=\\(.*\\)" -> let s = matched1 s in let objs = Common.split "[ \t]+" s in - assert(List.for_all (fun s -> thd3 (Common.dbe_of_filename s) = "o") + assert(List.for_all (fun s -> thd3 (Common.dbe_of_filename s) =$= "o") objs); pr2 ("OBJS: " ^ (join "|" objs)) diff --git a/extra/maintainers.ml b/extra/maintainers.ml index ff5916d..581288a 100644 --- a/extra/maintainers.ml +++ b/extra/maintainers.ml @@ -75,10 +75,10 @@ let generate_naive_subsystem_info dirs = if List.length dir_elems >= 2 then let base = Common.take 2 dir_elems in (fun dir_elems' -> - List.length dir_elems' >= 2 && Common.take 2 dir_elems' = base), + List.length dir_elems' >= 2 && Common.take 2 dir_elems' =*= base), base else - (fun dir_elems' -> dir_elems' = dir_elems), + (fun dir_elems' -> dir_elems' =*= dir_elems), dir_elems in diff --git a/flag_cocci.ml b/flag_cocci.ml index 3d7e415..247fa4e 100644 --- a/flag_cocci.ml +++ b/flag_cocci.ml @@ -51,7 +51,7 @@ type include_options = I_UNSPECIFIED | I_NO_INCLUDES | I_NORMAL_INCLUDES | I_ALL_INCLUDES let include_options = ref I_UNSPECIFIED -let include_path = ref "include" +let include_path = ref (None : string option) (* if true then when have a #include "../../xx.h", we look also for xx.h in * current directory. This is because of how works extract_c_and_res *) diff --git a/globals/.depend b/globals/.depend deleted file mode 100644 index e69de29..0000000 diff --git a/globals/Makefile b/globals/Makefile index d566808..c71daa0 100644 --- a/globals/Makefile +++ b/globals/Makefile @@ -51,15 +51,16 @@ $(TARGET).cmxa: $(OPTOBJS) $(LIBS:.cma=.cmxa) .ml.cmx: $(OCAMLOPT) -c $< -.ml.mldepend: +.ml.mldepend: $(OCAMLC) -i $< clean:: rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot - -clean:: rm -f *~ .*~ gmon.out #*# +distclean:: + rm -f .depend + beforedepend:: depend:: beforedepend diff --git a/globals/config.ml b/globals/config.ml.in similarity index 90% rename from globals/config.ml rename to globals/config.ml.in index c133614..6d7bf93 100644 --- a/globals/config.ml +++ b/globals/config.ml.in @@ -1,4 +1,4 @@ -let version = "0.1.6a" +let version = "0.1.7" let path = try (Sys.getenv "COCCINELLE_HOME") diff --git a/install.txt b/install.txt index 6568c4f..8156c5f 100644 --- a/install.txt +++ b/install.txt @@ -16,3 +16,12 @@ Then simply type make make install +Note: 'make' will compile the bytecode version by default. + You could use 'make all.opt' to have the optimized version. + If you compile both, 'make install' will take care of that + and install both, spatch and spatch.opt. + If you use only one of them, 'make install' will install + the one you have compiled, either spatch ou spatch.opt, + under the front-end spatch. You could use 'make world' to + compile the bytecode and the native code version. + diff --git a/main.ml b/main.ml index a49d8a0..52096bb 100644 --- a/main.ml +++ b/main.ml @@ -214,8 +214,8 @@ let short_options = [ " causes local include files to be used"; "-include_headers", Arg.Set include_headers, " process header files independently"; - "-I", Arg.Set_string FC.include_path, - "

      containing the Linux headers (optional)"; + "-I", Arg.String (function x -> FC.include_path := Some x), + " containing the header files (optional)"; "-dir", Arg.Set dir, @@ -239,7 +239,7 @@ let short_options = [ " guess what"; "-date", Arg.Unit (fun () -> - pr2 "version: $Date: 2009/02/19 16:00:47 $"; + pr2 "version: $Date: 2009/04/15 18:01:55 $"; raise (Common.UnixExit 0) ), " guess what"; @@ -378,12 +378,18 @@ let other_options = [ " timeout in seconds"; "-steps", Arg.Int (fun x -> Flag_ctl.steps := Some x), " max number of model checking steps per code unit"; + "-iso_limit", Arg.Int (fun x -> Flag_parsing_cocci.iso_limit := Some x), + " max depth of iso application"; + "-no_iso_limit", Arg.Unit (fun _ -> Flag_parsing_cocci.iso_limit := None), + " disable limit on max depth of iso application"; "-track_iso", Arg.Set Flag.track_iso_usage, " gather information about isomorphism usage"; "-profile_iso", Arg.Unit (function () -> - Common.profile:=PSOME ["parse cocci";"mysat";"asttoctl2";"full_engine"]), + Common.profile := + (*post_engine not included, because it doesn't use isos*) + PSOME ["parse cocci";"mysat";"asttoctl2";"pre_engine";"full_engine"]), " gather information about the cost of isomorphism usage" ]; @@ -392,6 +398,7 @@ let other_options = [ "change of algorithm options", "", [ +(* no popl in official version "-popl", Arg.Set FC.popl, " simplified SmPL, for the popl paper"; @@ -404,6 +411,7 @@ let other_options = [ Arg.Unit (function _ -> FC.popl := true; Flag_popl.keep_all_wits := true), " simplified SmPL, for the popl paper"; +*) "-hrule", Arg.String (function s -> @@ -556,7 +564,7 @@ let adjust_stdin cfile k = try let (dir, base, ext) = Common.dbe_of_filename cfile in let varfile = Common.filename_of_dbe (dir, base, "var") in - if ext = "c" && Common.lfile_exists varfile + if ext =$= "c" && Common.lfile_exists varfile then Some varfile else None with Invalid_argument("Filename.chop_extension") -> None @@ -584,103 +592,18 @@ let glimpse_filter (coccifile, isofile) dir = - (*****************************************************************************) -(* The coccinelle main entry point *) +(* Main action *) (*****************************************************************************) -let main () = - begin - let arglist = Array.to_list Sys.argv in - - if not (null (Common.inter_set arglist - ["-cocci_file";"-sp_file";"-test";"-testall"; - "-test_okfailed";"-test_regression_okfailed"])) - then run_profile quiet_profile; - - let args = ref [] in - - (* this call can set up many global flag variables via the cmd line *) - arg_parse2 (Arg.align all_options) (fun x -> args := x::!args) usage_msg; - - (if !dir && List.length !args > 1 - then - begin - let chosen = List.hd !args in - pr2 ("ignoring all but the last specified directory: "^chosen); - args := [chosen] - end); - args := List.rev !args; - - if !cocci_file <> "" && (not (!cocci_file =~ ".*\\.\\(sgrep\\|spatch\\)$")) - then cocci_file := Common.adjust_ext_if_needed !cocci_file ".cocci"; - - if !Config.std_iso <> "" - then Config.std_iso := Common.adjust_ext_if_needed !Config.std_iso ".iso"; - if !Config.std_h <> "" - then Config.std_h := Common.adjust_ext_if_needed !Config.std_h ".h"; - - if !Config.std_h <> "" - then Parse_c.init_defs !Config.std_h; - - - (* must be done after Arg.parse, because Common.profile is set by it *) - Common.profile_code "Main total" (fun () -> - - - let all_actions = Test_parsing_c.actions() in - - (match (!args) with - - (* --------------------------------------------------------- *) - (* The test framework. Works with tests/ or .ok and .failed *) - (* --------------------------------------------------------- *) - | [x] when !test_mode -> - FC.include_path := "tests/include"; - Testing.testone x !compare_with_expected - - | [] when !test_all -> - FC.include_path := "tests/include"; - Testing.testall () - - | [] when !test_regression_okfailed -> - Testing.test_regression_okfailed () - - | x::xs when !test_okfailed -> - (* do its own timeout on FC.timeout internally *) - FC.relax_include_path := true; - adjust_stdin x (fun () -> - Testing.test_okfailed !cocci_file (x::xs) - ) - - (* --------------------------------------------------------- *) - (* Actions, useful to debug subpart of coccinelle *) - (* --------------------------------------------------------- *) - | xs when List.mem !action (Common.action_list all_actions) -> - Common.do_action !action xs all_actions - - | [file] when !action = "-parse_cocci" -> - Testing.test_parse_cocci file - - (* I think this is used by some scripts in some Makefile for our - * big-tests. So dont remove. - *) - | [file1;file2] when !action = "-compare_c" -> - Test_parsing_c.test_compare_c file1 file2 (* result = unix code *) - - (* could add the Test_parsing_c.test_actions such as -parse_c & co *) - - - (* --------------------------------------------------------- *) - (* This is the main entry *) - (* --------------------------------------------------------- *) - | x::xs -> - +let main_action xs = + match xs with + | x::xs -> adjust_stdin x (fun () -> - if !cocci_file = "" + if !cocci_file =$= "" then failwith "I need a cocci file, use -sp_file "; - if !dir && !Flag.patch = None + if !dir && !Flag.patch =*= None then (match xs with | [] -> Flag.patch := Some x @@ -751,7 +674,7 @@ let main () = let rec loop ct = function [] -> [] | x::xs -> - if (ct mod max) = index + if (ct mod max) =|= index then x::(loop (ct+1) xs) else loop (ct+1) xs in loop 0 infiles @@ -772,24 +695,29 @@ let main () = | _ -> failwith "inconsistent distribution information" in let outfiles = - Common.profile_code "Main.outfiles computation" (fun () -> - infiles +> List.map (fun cfiles -> - pr2 ("HANDLING: " ^ (join " " cfiles)); - Common.timeout_function_opt !FC.timeout (fun () -> - Common.report_if_take_time 10 (join " " cfiles) (fun () -> + Common.profile_code "Main.outfiles computation" (fun () -> + let cocci_infos = + Cocci.pre_engine (!cocci_file, !Config.std_iso) in + let res = + infiles +> List.map (fun cfiles -> + pr2 ("HANDLING: " ^ (join " " cfiles)); + Common.timeout_function_opt !FC.timeout (fun () -> + Common.report_if_take_time 10 (join " " cfiles) (fun () -> (* Unix.sleep 1; *) - try + try (* this is the main call *) - Cocci.full_engine (!cocci_file, !Config.std_iso) cfiles - with - | Common.UnixExit x -> raise (Common.UnixExit x) - | e -> - if !dir - then begin - pr2 ("EXN:" ^ Printexc.to_string e); - [] (* *) - end - else raise e))) + Cocci.full_engine cocci_infos cfiles + with + | Common.UnixExit x -> raise (Common.UnixExit x) + | e -> + if !dir + then begin + pr2 ("EXN:" ^ Printexc.to_string e); + [] (* *) + end + else raise e))) in + Cocci.post_engine cocci_infos; + res ) +> List.concat in @@ -810,7 +738,7 @@ let main () = if !outplace_modif then Common.command2 ("cp "^outfile^" "^infile^".cocci_res"); - if !output_file = "" + if !output_file =$= "" then begin let tmpfile = "/tmp/"^Common.basename infile in pr2 (spf "One file modified. Result is here: %s" tmpfile); @@ -819,9 +747,9 @@ let main () = )); if !output_file <> "" then (match outfiles with - | [infile, Some outfile] when infile = x && null xs -> + | [infile, Some outfile] when infile =$= x && null xs -> Common.command2 ("cp " ^outfile^ " " ^ !output_file); - | [infile, None] when infile = x && null xs -> + | [infile, None] when infile =$= x && null xs -> Common.command2 ("cp " ^infile^ " " ^ !output_file); | _ -> failwith @@ -831,7 +759,109 @@ let main () = if !compare_with_expected then Testing.compare_with_expected outfiles)) - + + | [] -> raise Impossible + + +(*****************************************************************************) +(* The coccinelle main entry point *) +(*****************************************************************************) +let main () = + begin + let arglist = Array.to_list Sys.argv in + + if not (null (Common.inter_set arglist + ["-cocci_file";"-sp_file";"-test";"-testall"; + "-test_okfailed";"-test_regression_okfailed"])) + then run_profile quiet_profile; + + let args = ref [] in + + (* this call can set up many global flag variables via the cmd line *) + arg_parse2 (Arg.align all_options) (fun x -> args := x::!args) usage_msg; + + (if !dir + then + let chosen_dir = + if List.length !args > 1 + then + begin + let chosen = List.hd !args in + pr2 ("ignoring all but the last specified directory: "^chosen); + args := [chosen]; + chosen + end + else List.hd !args in + if !FC.include_path =*= None + then FC.include_path := Some (Filename.concat chosen_dir "include")); + args := List.rev !args; + + if !cocci_file <> "" && (not (!cocci_file =~ ".*\\.\\(sgrep\\|spatch\\)$")) + then cocci_file := Common.adjust_ext_if_needed !cocci_file ".cocci"; + + if !Config.std_iso <> "" + then Config.std_iso := Common.adjust_ext_if_needed !Config.std_iso ".iso"; + if !Config.std_h <> "" + then Config.std_h := Common.adjust_ext_if_needed !Config.std_h ".h"; + + if !Config.std_h <> "" + then Parse_c.init_defs !Config.std_h; + + + (* must be done after Arg.parse, because Common.profile is set by it *) + Common.profile_code "Main total" (fun () -> + + + let all_actions = Test_parsing_c.actions() in + + (match (!args) with + + (* --------------------------------------------------------- *) + (* The test framework. Works with tests/ or .ok and .failed *) + (* --------------------------------------------------------- *) + | [x] when !test_mode -> + FC.include_path := Some "tests/include"; + Testing.testone x !compare_with_expected + + | [] when !test_all -> + FC.include_path := Some "tests/include"; + Testing.testall () + + | [] when !test_regression_okfailed -> + Testing.test_regression_okfailed () + + | x::xs when !test_okfailed -> + (* do its own timeout on FC.timeout internally *) + FC.relax_include_path := true; + adjust_stdin x (fun () -> + Testing.test_okfailed !cocci_file (x::xs) + ) + + (* --------------------------------------------------------- *) + (* Actions, useful to debug subpart of coccinelle *) + (* --------------------------------------------------------- *) + + | xs when List.mem !action (Common.action_list all_actions) -> + Common.do_action !action xs all_actions + + | [file] when !action =$= "-parse_cocci" -> + Testing.test_parse_cocci file + + (* I think this is used by some scripts in some Makefile for our + * big-tests. So dont remove. + *) + | [file1;file2] when !action =$= "-compare_c" -> + Test_parsing_c.test_compare_c file1 file2 (* result = unix code *) + + (* could add the Test_parsing_c.test_actions such as -parse_c & co *) + + + (* --------------------------------------------------------- *) + (* This is the main entry *) + (* --------------------------------------------------------- *) + | x::xs -> + main_action (x::xs) + (* --------------------------------------------------------- *) (* empty entry *) (* --------------------------------------------------------- *) diff --git a/menhirlib/.depend b/menhirlib/.depend deleted file mode 100644 index af43dff..0000000 --- a/menhirlib/.depend +++ /dev/null @@ -1,10 +0,0 @@ -engine.cmo: engineTypes.cmo -engine.cmx: engineTypes.cmx -rowDisplacement.cmo: infiniteArray.cmo -rowDisplacement.cmx: infiniteArray.cmx -tableFormat.cmo: packedIntArray.cmo engineTypes.cmo -tableFormat.cmx: packedIntArray.cmx engineTypes.cmx -tableInterpreter.cmo: tableFormat.cmo rowDisplacement.cmo packedIntArray.cmo \ - engineTypes.cmo engine.cmo -tableInterpreter.cmx: tableFormat.cmx rowDisplacement.cmx packedIntArray.cmx \ - engineTypes.cmx engine.cmx diff --git a/menhirlib/Makefile b/menhirlib/Makefile index f98c9e4..f412b78 100644 --- a/menhirlib/Makefile +++ b/menhirlib/Makefile @@ -10,7 +10,7 @@ SRC= infiniteArray.ml packedIntArray.ml rowDisplacement.ml engineTypes.ml \ engine.ml tableFormat.ml tableInterpreter.ml convert.ml LIBS= -INCLUDES= +INCLUDES= # copy what the menhir authors do EXTRAOPT=-for-pack MenhirLib @@ -21,9 +21,9 @@ EXTRAOPT=-for-pack MenhirLib OCAMLCFLAGS=-g -dtypes OPTFLAGS= -OCAMLC=ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES) -OCAMLOPT= ocamlopt$(OPTBIN) $(OPTFLAGS) $(EXTRAOPT) $(INCLUDES) -OCAMLOPT2=ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES) +OCAMLC=ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES) +OCAMLOPT= ocamlopt$(OPTBIN) $(OPTFLAGS) $(EXTRAOPT) $(INCLUDES) +OCAMLOPT2=ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES) OCAMLLEX=ocamllex$(OPTBIN) OCAMLYACC=ocamlyacc -v OCAMLDEP=ocamldep$(OPTBIN) $(INCLUDES) @@ -46,9 +46,9 @@ $(TARGET).cma: $(OBJS) $(LIBS) $(TARGET).cmxa: $(OPTOBJS) $(LIBS:.cma=.cmxa) $(OCAMLOPT) -a -o $@ $(OPTOBJS) -# I thought at first that only one file menhirLib.ml +# I thought at first that only one file menhirLib.ml # was needed but in fact it's a wierd cos menhirLib.cmo results from multi -# files. They used the -pack ocamlc option, and for strange reason +# files. They used the -pack ocamlc option, and for strange reason # decided to produce a .cma instead of a classical .cma. # So I put all the necesseray files in this directory. @@ -71,7 +71,7 @@ menhirLib.cmx: $(OPTOBJS) .ml.cmx: $(OCAMLOPT) -c $< -.ml.mldepend: +.ml.mldepend: $(OCAMLC) -i $< clean:: @@ -85,4 +85,7 @@ beforedepend:: depend:: beforedepend $(OCAMLDEP) *.mli *.ml > .depend +distclean:: + rm -f .depend + -include .depend diff --git a/ocamlsexp/Makefile b/ocamlsexp/Makefile new file mode 100644 index 0000000..fd31cc9 --- /dev/null +++ b/ocamlsexp/Makefile @@ -0,0 +1,166 @@ +############################################################################## +# Variables +############################################################################## + +SRC= \ + type.ml \ + parser.ml \ + lexer.ml \ + pre_sexp.ml \ + sexp_intf.ml \ + sexp.ml \ + path.ml \ + conv.ml \ + conv_error.ml +#SOURCES = \ +# parser.mly \ +# lexer.mll \ +# sexp.mli path.mli conv.mli + + +TARGET=sexplib1 +TARGETPACK=sexplib +#LIB_PACK_NAME = sexplib + +############################################################################## +# Generic variables +############################################################################## + +INCLUDES= +#-I +camlp4 +SYSLIBS= str.cma unix.cma bigarray.cma num.cma +#INCDIRS = +camlp4 +#pad: take care for bigarray otherwise get some caml_ba_get_1 error msg + +############################################################################## +#OCAMLFLAGS = -for-pack Sexplib + +#PACKS = type-conv +#RESULT = sexplib + +#TRASH = pa_sexp_conv.cmi pa_sexp_conv.cmo pa_sexp_conv.annot + +#all: \ +# pack-byte-code pack-native-code \ +# sexplib.cma sexplib.cmxa \ +# pa_sexp_conv.cmi pa_sexp_conv.cmo +# +#LIBINSTALL_FILES = \ +# sexp.mli path.mli conv.mli \ +# sexplib.cmi sexplib.cma sexplib.cmxa sexplib.a \ +# pa_sexp_conv.cmi pa_sexp_conv.cmo +# +#install: libinstall +#uninstall: libuninstall +# +#clean:: clean-doc +# +#-include $(OCAMLMAKEFILE) + +############################################################################## + +############################################################################## +# Generic variables +############################################################################## + +#dont use -custom, it makes the bytecode unportable. +OCAMLCFLAGS= -g -dtypes # -w A +#-for-pack Sexplib + +# This flag is also used in subdirectories so don't change its name here. +OPTFLAGS= + + +OCAMLC=ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES) $(SYSINCLUDES) -thread +OCAMLOPT=ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES) $(SYSINCLUDES) -thread +OCAMLLEX=ocamllex #-ml # -ml for debugging lexer, but slightly slower +OCAMLYACC=ocamlyacc -v +OCAMLDEP=ocamldep $(INCLUDES) +OCAMLMKTOP=ocamlmktop -g -custom $(INCLUDES) -thread + +#-ccopt -static +STATIC= + + +############################################################################## +# Top rules +############################################################################## + +OBJS = $(SRC:.ml=.cmo) +OPTOBJS = $(SRC:.ml=.cmx) + +all: $(TARGET).cma $(TARGETPACK).cmo +all.opt: $(TARGET).cmxa + +$(TARGET).cma: $(OBJS) + $(OCAMLC) -a -o $(TARGET).cma $(OBJS) + +$(TARGET).cmxa: $(OPTOBJS) $(LIBS:.cma=.cmxa) + $(OCAMLOPT) -a -o $(TARGET).cmxa $(OPTOBJS) + +$(TARGET).top: $(OBJS) $(LIBS) + $(OCAMLMKTOP) -o $(TARGET).top $(SYSLIBS) $(LIBS) $(OBJS) + +clean:: + rm -f $(TARGET).top + + + +$(TARGETPACK).cmo: $(OBJS) + $(OCAMLC) -pack -o $(TARGETPACK).cmo $(OBJS) + +# special handling, fun that they use cpp whereas they claim camplp4 can do everything +pre_sexp.cmo: pre_sexp.ml + $(OCAMLC) -pp cpp -c $< + +pre_sexp.cmx: pre_sexp.ml + $(OCAMLOPT) -pp cpp -c $< + + + +lexer.ml: lexer.mll + $(OCAMLLEX) $< +clean:: + rm -f lexer.ml +beforedepend:: lexer.ml + + +parser.ml parser.mli: parser.mly + $(OCAMLYACC) $< +clean:: + rm -f parser.ml parser.mli parser.output +beforedepend:: parser.ml parser.mli + + + +############################################################################## +# Generic rules +############################################################################## + +.SUFFIXES: .ml .mli .cmo .cmi .cmx + +.ml.cmo: + $(OCAMLC) -c $< +.mli.cmi: + $(OCAMLC) -c $< +.ml.cmx: + $(OCAMLOPT) -c $< + +.ml.mldepend: + $(OCAMLC) -i $< + +clean:: + rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot +clean:: + rm -f *~ .*~ gmon.out #*# + +beforedepend:: + +# need also -pp cpp here +depend:: beforedepend + $(OCAMLDEP) -pp cpp *.mli *.ml > .depend + +distclean: clean + rm -f .depend + +-include .depend diff --git a/ocamlsexp/conv.ml b/ocamlsexp/conv.ml new file mode 100644 index 0000000..9955924 --- /dev/null +++ b/ocamlsexp/conv.ml @@ -0,0 +1,342 @@ +(* File: conv.ml + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(* Conv: Utility Module for S-expression Conversions *) + +open Printf +open Bigarray +open Sexp + +type 'a sexp_option = 'a option + +(* Conversion of OCaml-values to S-expressions *) + +let default_string_of_float = ref (fun n -> sprintf "%.20G" n) +let read_old_option_format = ref true +let write_old_option_format = ref true + +let sexp_of_unit () = List [] +let sexp_of_bool b = Atom (string_of_bool b) +let sexp_of_string str = Atom str +let sexp_of_char c = Atom (String.make 1 c) +let sexp_of_int n = Atom (string_of_int n) +let sexp_of_float n = Atom (!default_string_of_float n) +let sexp_of_int32 n = Atom (Int32.to_string n) +let sexp_of_int64 n = Atom (Int64.to_string n) +let sexp_of_nativeint n = Atom (Nativeint.to_string n) +let sexp_of_big_int n = Atom (Big_int.string_of_big_int n) +let sexp_of_nat n = Atom (Nat.string_of_nat n) +let sexp_of_num n = Atom (Num.string_of_num n) +let sexp_of_ratio n = Atom (Ratio.string_of_ratio n) +let sexp_of_ref sexp_of__a rf = sexp_of__a !rf +let sexp_of_lazy sexp_of__a lv = sexp_of__a (Lazy.force lv) + +let sexp_of_option sexp_of__a = function + | Some x when !write_old_option_format -> List [sexp_of__a x] + | Some x -> List [Atom "some"; sexp_of__a x] + | None when !write_old_option_format -> List [] + | None -> Atom "none" + +let sexp_of_pair sexp_of__a sexp_of__b (a, b) = + List [sexp_of__a a; sexp_of__b b] + +let sexp_of_triple sexp_of__a sexp_of__b sexp_of__c (a, b, c) = + List [sexp_of__a a; sexp_of__b b; sexp_of__c c] + +let sexp_of_list sexp_of__a lst = + List (List.rev (List.rev_map sexp_of__a lst)) + +let sexp_of_array sexp_of__a ar = + let lst_ref = ref [] in + for i = Array.length ar - 1 downto 0 do + lst_ref := sexp_of__a ar.(i) :: !lst_ref + done; + List !lst_ref + +let sexp_of_hashtbl sexp_of_key sexp_of_val htbl = + let coll k v acc = List [sexp_of_key k; sexp_of_val v] :: acc in + List (Hashtbl.fold coll htbl []) + +let sexp_of_float_vec vec = + let lst_ref = ref [] in + for i = Array1.dim vec downto 1 do + lst_ref := sexp_of_float vec.{i} :: !lst_ref + done; + List !lst_ref + +type vec32 = (float, float32_elt, fortran_layout) Array1.t +type vec64 = (float, float64_elt, fortran_layout) Array1.t +let sexp_of_float32_vec (vec : vec32) = sexp_of_float_vec vec +let sexp_of_float64_vec (vec : vec64) = sexp_of_float_vec vec +let sexp_of_vec (vec : vec64) = sexp_of_float_vec vec + +let sexp_of_float_mat mat = + let m = Array2.dim1 mat in + let n = Array2.dim2 mat in + let lst_ref = ref [] in + for col = n downto 1 do + let vec = Array2.slice_right mat col in + for row = m downto 1 do + lst_ref := sexp_of_float vec.{row} :: !lst_ref + done + done; + List (sexp_of_int m :: sexp_of_int n :: !lst_ref) + +type mat32 = (float, float32_elt, fortran_layout) Array2.t +type mat64 = (float, float64_elt, fortran_layout) Array2.t +let sexp_of_float32_mat (mat : mat32) = sexp_of_float_mat mat +let sexp_of_float64_mat (mat : mat64) = sexp_of_float_mat mat +let sexp_of_mat (mat : mat64) = sexp_of_float_mat mat + +let sexp_of_abstr _ = Atom "" +let sexp_of_fun _ = Atom "" + +type 'a opaque = 'a +let sexp_of_opaque _ _ = Atom "" + +let string_of__of__sexp_of to_sexp x = Sexp.to_string (to_sexp x) + + +(* Conversion of S-expressions to OCaml-values *) + +exception Of_sexp_error of string * Sexp.t + +let record_check_extra_fields = ref true + +let of_sexp_error what sexp = raise (Of_sexp_error (what, sexp)) + +let unit_of_sexp sexp = match sexp with + | List [] -> () + | Atom _ | List _ -> of_sexp_error "unit_of_sexp: empty list needed" sexp + +let bool_of_sexp sexp = match sexp with + | Atom ("true" | "True") -> true + | Atom ("false" | "False") -> false + | Atom _ -> of_sexp_error "bool_of_sexp: unknown string" sexp + | List _ -> of_sexp_error "bool_of_sexp: atom needed" sexp + +let string_of_sexp sexp = match sexp with + | Atom str -> str + | List _ -> of_sexp_error "string_of_sexp: atom needed" sexp + +let char_of_sexp sexp = match sexp with + | Atom str -> + if String.length str <> 1 then + of_sexp_error + "char_of_sexp: atom string must contain one character only" sexp; + str.[0] + | List _ -> of_sexp_error "char_of_sexp: atom needed" sexp + +let int_of_sexp sexp = match sexp with + | Atom str -> + (try int_of_string str + with exc -> of_sexp_error ("int_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "int_of_sexp: atom needed" sexp + +let float_of_sexp sexp = match sexp with + | Atom str -> + (try float_of_string str + with exc -> + of_sexp_error ("float_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "float_of_sexp: atom needed" sexp + +let int32_of_sexp sexp = match sexp with + | Atom str -> + (try Int32.of_string str + with exc -> + of_sexp_error ("int32_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "int32_of_sexp: atom needed" sexp + +let int64_of_sexp sexp = match sexp with + | Atom str -> + (try Int64.of_string str + with exc -> + of_sexp_error ("int64_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "int64_of_sexp: atom needed" sexp + +let nativeint_of_sexp sexp = match sexp with + | Atom str -> + (try Nativeint.of_string str + with exc -> + of_sexp_error ("nativeint_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "nativeint_of_sexp: atom needed" sexp + +let big_int_of_sexp sexp = match sexp with + | Atom str -> + (try Big_int.big_int_of_string str + with exc -> + of_sexp_error ("big_int_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "big_int_of_sexp: atom needed" sexp + +let nat_of_sexp sexp = match sexp with + | Atom str -> + (try Nat.nat_of_string str + with exc -> + of_sexp_error ("nat_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "nat_of_sexp: atom needed" sexp + +let num_of_sexp sexp = match sexp with + | Atom str -> + (try Num.num_of_string str + with exc -> + of_sexp_error ("num_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "num_of_sexp: atom needed" sexp + +let ratio_of_sexp sexp = match sexp with + | Atom str -> + (try Ratio.ratio_of_string str + with exc -> + of_sexp_error ("ratio_of_sexp: " ^ Printexc.to_string exc) sexp) + | List _ -> of_sexp_error "ratio_of_sexp: atom needed" sexp + +let ref_of_sexp a__of_sexp sexp = ref (a__of_sexp sexp) +let lazy_of_sexp a__of_sexp sexp = lazy (a__of_sexp sexp) + +let option_of_sexp a__of_sexp sexp = + if !read_old_option_format then + match sexp with + | List [] | Atom ("none" | "None") -> None + | List [el] | List [Atom ("some" | "Some"); el] -> Some (a__of_sexp el) + | List _ -> + of_sexp_error "option_of_sexp: list must represent optional value" sexp + | Atom _ -> of_sexp_error "option_of_sexp: only none can be atom" sexp + else + match sexp with + | Atom ("none" | "None") -> None + | List [Atom ("some" | "Some"); el] -> Some (a__of_sexp el) + | Atom _ -> of_sexp_error "option_of_sexp: only none can be atom" sexp + | List _ -> of_sexp_error "option_of_sexp: list must be (some el)" sexp + +let pair_of_sexp a__of_sexp b__of_sexp sexp = match sexp with + | List [a_sexp; b_sexp] -> + let a = a__of_sexp a_sexp in + let b = b__of_sexp b_sexp in + a, b + | List _ -> + of_sexp_error + "pair_of_sexp: list must contain exactly two elements only" sexp + | Atom _ -> of_sexp_error "pair_of_sexp: list needed" sexp + +let triple_of_sexp a__of_sexp b__of_sexp c__of_sexp sexp = match sexp with + | List [a_sexp; b_sexp; c_sexp] -> + let a = a__of_sexp a_sexp in + let b = b__of_sexp b_sexp in + let c = c__of_sexp c_sexp in + a, b, c + | List _ -> + of_sexp_error + "triple_of_sexp: list must contain exactly three elements only" sexp + | Atom _ -> of_sexp_error "triple_of_sexp: list needed" sexp + +let list_of_sexp a__of_sexp sexp = match sexp with + | List lst -> + let rev_lst = List.rev_map a__of_sexp lst in + List.rev rev_lst + | Atom _ -> of_sexp_error "list_of_sexp: list needed" sexp + +let array_of_sexp a__of_sexp sexp = match sexp with + | List [] -> [||] + | List (h :: t) -> + let len = List.length t + 1 in + let res = Array.create len (a__of_sexp h) in + let rec loop i = function + | [] -> res + | h :: t -> res.(i) <- a__of_sexp h; loop (i + 1) t in + loop 1 t + | Atom _ -> of_sexp_error "array_of_sexp: list needed" sexp + +let hashtbl_of_sexp key_of_sexp val_of_sexp sexp = match sexp with + | List lst -> + let htbl = Hashtbl.create 0 in + let act = function + | List [k_sexp; v_sexp] -> + Hashtbl.add htbl (key_of_sexp k_sexp) (val_of_sexp v_sexp) + | List _ | Atom _ -> + of_sexp_error "hashtbl_of_sexp: tuple list needed" sexp + in + List.iter act lst; + htbl + | Atom _ -> of_sexp_error "hashtbl_of_sexp: list needed" sexp + +let float_vec_of_sexp empty_float_vec create_float_vec sexp = match sexp with + | List [] -> empty_float_vec + | List lst -> + let len = List.length lst in + let res = create_float_vec len in + let rec loop i = function + | [] -> res + | h :: t -> res.{i} <- float_of_sexp h; loop (i + 1) t in + loop 1 lst + | Atom _ -> of_sexp_error "float_vec_of_sexp: list needed" sexp + +let create_float32_vec = Array1.create float32 fortran_layout +let create_float64_vec = Array1.create float64 fortran_layout +let empty_float32_vec = create_float32_vec 0 +let empty_float64_vec = create_float64_vec 0 +let float32_vec_of_sexp = float_vec_of_sexp empty_float32_vec create_float32_vec +let float64_vec_of_sexp = float_vec_of_sexp empty_float64_vec create_float64_vec +let vec_of_sexp = float_vec_of_sexp empty_float64_vec create_float64_vec + +let check_too_much_data sexp data res = + if data = [] then res + else of_sexp_error "float_mat_of_sexp: too much data" sexp + +let float_mat_of_sexp create_float_mat sexp = match sexp with + | List (sm :: sn :: data) -> + let m = int_of_sexp sm in + let n = int_of_sexp sn in + let res = create_float_mat m n in + if m = 0 || n = 0 then check_too_much_data sexp data res + else + let rec loop_cols col data = + let vec = Array2.slice_right res col in + let rec loop_rows row = function + | [] -> of_sexp_error "float_mat_of_sexp: not enough data" sexp + | h :: t -> + vec.{row} <- float_of_sexp h; + if row = m then + if col = n then check_too_much_data sexp t res + else loop_cols (col + 1) t + else loop_rows (row + 1) t in + loop_rows 1 data in + loop_cols 1 data + | List _ -> of_sexp_error "float_mat_of_sexp: list too short" sexp + | Atom _ -> of_sexp_error "float_mat_of_sexp: list needed" sexp + +let create_float32_mat = Array2.create float32 fortran_layout +let create_float64_mat = Array2.create float64 fortran_layout + +let float32_mat_of_sexp = float_mat_of_sexp create_float32_mat +let float64_mat_of_sexp = float_mat_of_sexp create_float64_mat +let mat_of_sexp = float_mat_of_sexp create_float64_mat + +let fun_of_sexp sexp = + of_sexp_error "fun_of_sexp: cannot convert function values" sexp + +let of_string__of__of_sexp of_sexp s = + try + let sexp = Sexp.of_string s in + of_sexp sexp + with e -> + failwith (sprintf "of_string failed on %s with %s" s (Printexc.to_string e)) diff --git a/ocamlsexp/conv.mli b/ocamlsexp/conv.mli new file mode 100644 index 0000000..60ab215 --- /dev/null +++ b/ocamlsexp/conv.mli @@ -0,0 +1,348 @@ +(* File: conv.mli + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(** Conv: Utility Module for S-expression Conversions *) + +open Bigarray + +(** Dummy definition for "optional" options *) +type 'a sexp_option = 'a option + + +(** {6 Conversion of OCaml-values to S-expressions} *) + +val default_string_of_float : (float -> string) ref +(** [default_string_of_float] reference to the default function used + to convert floats to strings. + + Initially set to [fun n -> sprintf "%.20G" n]. +*) + +val write_old_option_format : bool ref +(** [write_old_option_format] reference for the default option format + used to write option values. If set to [true], the old-style option + format will be used, the new-style one otherwise. + + Initially set to [true]. +*) + +val read_old_option_format : bool ref +(** [read_old_option_format] reference for the default option format + used to read option values. [Of_sexp_error] will be raised with + old-style option values if this reference is set to [false]. + Reading new-style option values is always supported. + + Initially set to [true]. +*) + +val sexp_of_unit : unit -> Sexp.t +(** [sexp_of_unit ()] converts a value of type [unit] to an S-expression. *) + +val sexp_of_bool : bool -> Sexp.t +(** [sexp_of_bool b] converts the value [x] of type [bool] to an + S-expression. *) + +val sexp_of_string : string -> Sexp.t +(** [sexp_of_bool str] converts the value [str] of type [string] to an + S-expression. *) + +val sexp_of_char : char -> Sexp.t +(** [sexp_of_char c] converts the value [c] of type [char] to an + S-expression. *) + +val sexp_of_int : int -> Sexp.t +(** [sexp_of_int n] converts the value [n] of type [int] to an + S-expression. *) + +val sexp_of_float : float -> Sexp.t +(** [sexp_of_float n] converts the value [n] of type [float] to an + S-expression. *) + +val sexp_of_int32 : int32 -> Sexp.t +(** [sexp_of_int32 n] converts the value [n] of type [int32] to an + S-expression. *) + +val sexp_of_int64 : int64 -> Sexp.t +(** [sexp_of_int64 n] converts the value [n] of type [int64] to an + S-expression. *) + +val sexp_of_nativeint : nativeint -> Sexp.t +(** [sexp_of_nativeint n] converts the value [n] of type [nativeint] to an + S-expression. *) + +val sexp_of_big_int : Big_int.big_int -> Sexp.t +(** [sexp_of_big_int n] converts the value [n] of type [Big_int.big_int] + to an S-expression. *) + +val sexp_of_nat : Nat.nat -> Sexp.t +(** [sexp_of_nat n] converts the value [n] of type [Nat.nat] to an + S-expression. *) + +val sexp_of_num : Num.num -> Sexp.t +(** [sexp_of_num n] converts the value [n] of type [Num.num] to an + S-expression. *) + +val sexp_of_ratio : Ratio.ratio -> Sexp.t +(** [sexp_of_ratio n] converts the value [n] of type [Ratio.ratio] to an + S-expression. *) + +val sexp_of_ref : ('a -> 'b) -> 'a ref -> 'b +(** [sexp_of_ref conv r] converts the value [r] of type ['a ref] to + an S-expression. Uses [conv] to convert values of type ['a] to an + S-expression. *) + +val sexp_of_lazy : ('a -> 'b) -> 'a lazy_t -> 'b +(** [sexp_of_ref conv l] converts the value [l] of type ['a lazy_t] to + an S-expression. Uses [conv] to convert values of type ['a] to an + S-expression. *) + +val sexp_of_option : ('a -> Sexp.t) -> 'a option -> Sexp.t +(** [sexp_of_option conv opt] converts the value [opt] of type ['a + option] to an S-expression. Uses [conv] to convert values of type + ['a] to an S-expression. *) + +val sexp_of_pair : ('a -> Sexp.t) -> ('b -> Sexp.t) -> 'a * 'b -> Sexp.t +(** [sexp_of_pair conv1 conv2 pair] converts a pair to an S-expression. + It uses its first argument to convert the first element of the pair, + and its second argument to convert the second element of the pair. *) + +val sexp_of_triple : + ('a -> Sexp.t) -> ('b -> Sexp.t) -> ('c -> Sexp.t) -> 'a * 'b * 'c -> Sexp.t +(** [sexp_of_triple conv1 conv2 conv3 triple] converts a triple to + an S-expression using [conv1], [conv2], and [conv3] to convert its + elements. *) + +val sexp_of_list : ('a -> Sexp.t) -> 'a list -> Sexp.t +(** [sexp_of_list conv lst] converts the value [lst] of type ['a + list] to an S-expression. Uses [conv] to convert values of type + ['a] to an S-expression. *) + +val sexp_of_array : ('a -> Sexp.t) -> 'a array -> Sexp.t +(** [sexp_of_array conv ar] converts the value [ar] of type ['a + array] to an S-expression. Uses [conv] to convert values of type + ['a] to an S-expression. *) + +val sexp_of_hashtbl : + ('a -> Sexp.t) -> ('b -> Sexp.t) -> ('a, 'b) Hashtbl.t -> Sexp.t +(** [sexp_of_hashtbl conv_key conv_value htbl] converts the value [htbl] + of type [('a, 'b) Hashtbl.t] to an S-expression. Uses [conv_key] + to convert the hashtable keys of type ['a], and [conv_value] to + convert hashtable values of type ['b] to S-expressions. *) + +val sexp_of_float32_vec : + (float, float32_elt, fortran_layout) Array1.t -> Sexp.t +(** [sexp_of_float32_vec vec] converts the one-dimensional bigarray + [vec] of 32-bit floats in Fortran-layout to an S-expression. *) + +val sexp_of_float64_vec : + (float, float64_elt, fortran_layout) Array1.t -> Sexp.t +(** [sexp_of_float64_vec vec] converts the one-dimensional bigarray + [vec] of 64-bit floats in Fortran-layout to an S-expression. *) + +val sexp_of_vec : (float, float64_elt, fortran_layout) Array1.t -> Sexp.t +(** [sexp_of_vec vec] same as {!Conv.sexp_of_float64_vec}. *) + +val sexp_of_float32_mat : + (float, float32_elt, fortran_layout) Array2.t -> Sexp.t +(** [sexp_of_float32_mat mat] converts the two-dimensional bigarray + [mat] of 32-bit floats in Fortran-layout to an S-expression. *) + +val sexp_of_float64_mat : + (float, float64_elt, fortran_layout) Array2.t -> Sexp.t +(** [sexp_of_float64_mat mat] converts the two-dimensional bigarray + [mat] of 64-bit floats in Fortran-layout to an S-expression. *) + +val sexp_of_mat : (float, float64_elt, fortran_layout) Array2.t -> Sexp.t +(** [sexp_of_mat mat] same as {!Conv.sexp_of_float64_mat}. *) + +val sexp_of_abstr : 'a -> Sexp.t +(** [sexp_of_abstr x] converts the value [x] of abstract type to an + S-expression. *) + +val sexp_of_fun : ('a -> 'b) -> Sexp.t +(** [sexp_of_fun f] converts the value [f] of function type to an + S-expression. *) + +(** Type used for declaring existing types as opaque to sexp converters, + i.e. even if there is a defined converter for ['a], it will not + be called. This is useful to e.g. suppress printing of extremely + large sub-structures for purely informational, human-readable output. +*) +type 'a opaque = 'a + +val sexp_of_opaque : ('a -> Sexp.t) -> 'a opaque -> Sexp.t +(** [sexp_of_opaque _ _] converts opaque OCaml-values to S-expressions. *) + +val string_of__of__sexp_of : ('a -> Sexp.t) -> 'a -> string +(** [string_of__of__sexp_of conv x] converts the OCaml-value [x] to + an S-expression represented as a string by using conversion function + [conv]. *) + + +(** {6 Conversion of S-expressions to OCaml-values} *) + +exception Of_sexp_error of string * Sexp.t +(** [Of_sexp_error (reason, sexp)] the exception raised when an + S-expression could not be successfully converted to an OCaml-value. *) + +val record_check_extra_fields : bool ref +(** [record_check_extra_fields] checks for extra (= unknown) fields + in record S-expressions. *) + +val of_sexp_error : string -> Sexp.t -> 'a +(** [of_sexp_error reason sexp] @raise the exception [Of_sexp_error + (reason, sexp)]. *) + +val unit_of_sexp : Sexp.t -> unit +(** [unit_of_sexp sexp] converts S-expression [sexp] to a value of type + [unit]. *) + +val bool_of_sexp : Sexp.t -> bool +(** [bool_of_sexp sexp] converts S-expression [sexp] to a value of type + [bool]. *) + +val string_of_sexp : Sexp.t -> string +(** [string_of_sexp sexp] converts S-expression [sexp] to a value of type + [string]. *) + +val char_of_sexp : Sexp.t -> char +(** [char_of_sexp sexp] converts S-expression [sexp] to a value of type + [char]. *) + +val int_of_sexp : Sexp.t -> int +(** [int_of_sexp sexp] converts S-expression [sexp] to a value of type + [int]. *) + +val float_of_sexp : Sexp.t -> float +(** [float_of_sexp sexp] converts S-expression [sexp] to a value of type + [float]. *) + +val int32_of_sexp : Sexp.t -> int32 +(** [int32_of_sexp sexp] converts S-expression [sexp] to a value of type + [int32]. *) + +val int64_of_sexp : Sexp.t -> int64 +(** [int64_of_sexp sexp] converts S-expression [sexp] to a value of type + [int64]. *) + +val nativeint_of_sexp : Sexp.t -> nativeint +(** [nativeint_of_sexp sexp] converts S-expression [sexp] to a value + of type [nativeint]. *) + +val big_int_of_sexp : Sexp.t -> Big_int.big_int +(** [big_int_of_sexp sexp] converts S-expression [sexp] to a value + of type [Big_int.big_int]. *) + +val nat_of_sexp : Sexp.t -> Nat.nat +(** [nat_of_sexp sexp] converts S-expression [sexp] to a value + of type [Nat.nat]. *) + +val num_of_sexp : Sexp.t -> Num.num +(** [num_of_sexp sexp] converts S-expression [sexp] to a value + of type [Nat.num]. *) + +val ratio_of_sexp : Sexp.t -> Ratio.ratio +(** [ratio_of_sexp sexp] converts S-expression [sexp] to a value + of type [Nat.ratio]. *) + +val ref_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a ref +(** [ref_of_sexp conv sexp] converts S-expression [sexp] to a value + of type ['a ref] using conversion function [conv], which converts + an S-expression to a value of type ['a]. *) + +val lazy_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a lazy_t +(** [lazy_of_sexp conv sexp] converts S-expression [sexp] to a value + of type ['a lazy_t] using conversion function [conv], which converts + an S-expression to a value of type ['a]. *) + +val option_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a option +(** [option_of_sexp conv sexp] converts S-expression [sexp] to a value + of type ['a option] using conversion function [conv], which converts + an S-expression to a value of type ['a]. *) + +val pair_of_sexp : (Sexp.t -> 'a) -> (Sexp.t -> 'b) -> Sexp.t -> 'a * 'b +(** [pair_of_sexp conv1 conv2 sexp] converts S-expression [sexp] to a pair + of type ['a * 'b] using conversion functions [conv1] and [conv2], + which convert S-expressions to values of type ['a] and ['b] + respectively. *) + +val triple_of_sexp : + (Sexp.t -> 'a) -> (Sexp.t -> 'b) -> (Sexp.t -> 'c) -> Sexp.t -> 'a * 'b * 'c +(** [triple_of_sexp conv1 conv2 conv3 sexp] converts S-expression [sexp] + to a triple of type ['a * 'b * 'c] using conversion functions [conv1], + [conv2], and [conv3], which convert S-expressions to values of type + ['a], ['b], and ['c] respectively. *) + +val list_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a list +(** [list_of_sexp conv sexp] converts S-expression [sexp] to a value + of type ['a list] using conversion function [conv], which converts + an S-expression to a value of type ['a]. *) + +val array_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a array +(** [array_of_sexp conv sexp] converts S-expression [sexp] to a value + of type ['a array] using conversion function [conv], which converts + an S-expression to a value of type ['a]. *) + +val hashtbl_of_sexp : + (Sexp.t -> 'a) -> (Sexp.t -> 'b) -> Sexp.t -> ('a, 'b) Hashtbl.t +(** [hashtbl_of_sexp conv_key conv_value sexp] converts S-expression + [sexp] to a value of type [('a, 'b) Hashtbl.t] using conversion + function [conv_key], which converts an S-expression to hashtable + key of type ['a], and function [conv_value], which converts an + S-expression to hashtable value of type ['b]. *) + +val float32_vec_of_sexp : + Sexp.t -> (float, float32_elt, fortran_layout) Array1.t +(** [float32_vec_of_sexp sexp] converts S-expression [sexp] to a + one-dimensional bigarray of 32-bit floats in Fortran-layout. *) + +val float64_vec_of_sexp : + Sexp.t -> (float, float64_elt, fortran_layout) Array1.t +(** [float64_vec_of_sexp sexp] converts S-expression [sexp] to a + one-dimensional bigarray of 64-bit floats in Fortran-layout. *) + +val vec_of_sexp : Sexp.t -> (float, float64_elt, fortran_layout) Array1.t +(** [vec_of_sexp sexp] same as {!float64_vec_of_sexp}. *) + +val float32_mat_of_sexp : + Sexp.t -> (float, float32_elt, fortran_layout) Array2.t +(** [float32_mat_of_sexp sexp] converts S-expression [sexp] to a + two-dimensional bigarray of 32-bit floats in Fortran-layout. *) + +val float64_mat_of_sexp : + Sexp.t -> (float, float64_elt, fortran_layout) Array2.t +(** [float64_mat_of_sexp sexp] converts S-expression [sexp] to a + two-dimensional bigarray of 64-bit floats in Fortran-layout. *) + +val mat_of_sexp : Sexp.t -> (float, float64_elt, fortran_layout) Array2.t +(** [mat_of_sexp sexp] same as {!Conv.float64_mat_of_sexp}. *) + +val fun_of_sexp : Sexp.t -> ('a -> 'b) +(** [fun_of_sexp sexp] @raise a conversion error when attempting to + convert an S-expression to a function. *) + +val of_string__of__of_sexp : (Sexp.t -> 'a) -> string -> 'a +(** [of_string__of__of_sexp conv str] converts the S-expression [str] + represented as a string to an OCaml-value by using conversion function + [conv]. *) diff --git a/ocamlsexp/conv_error.ml b/ocamlsexp/conv_error.ml new file mode 100644 index 0000000..caf25d9 --- /dev/null +++ b/ocamlsexp/conv_error.ml @@ -0,0 +1,138 @@ +(* File: conv_error.ml + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(* Conv_error: Module for Handling Errors during Automated S-expression + Conversions *) + +open Printf +open Conv + +(* Errors concerning tuples *) + +let tuple_of_size_n_expected loc n sexp = + of_sexp_error (sprintf "%s_of_sexp: tuple of size %d expected" loc n) sexp + + +(* Errors concerning sum types *) + +let stag_no_args loc sexp = + of_sexp_error (loc ^ "_of_sexp: sum tag does not take arguments") sexp + +let stag_incorrect_n_args loc tag sexp = + let msg = + sprintf "%s_of_sexp: sum tag %S has incorrect number of arguments" loc tag + in + of_sexp_error msg sexp + +let stag_takes_args loc sexp = + of_sexp_error (loc ^ "_of_sexp: sum tag must be a structured value") sexp + +let nested_list_invalid_sum loc sexp = + of_sexp_error (loc ^ "_of_sexp: a nested list is an invalid sum") sexp + +let empty_list_invalid_sum loc sexp = + of_sexp_error (loc ^ "_of_sexp: the empty list is an invalid sum") sexp + +let unexpected_stag loc sexp = + of_sexp_error (loc ^ "_of_sexp: unexpected sum tag") sexp + + +(* Errors concerning records *) + +let record_only_pairs_expected loc sexp = + let msg = + loc ^ + "_of_sexp: record conversion: only pairs expected, \ + their first element must be an atom" in + of_sexp_error msg sexp + +let record_superfluous_fields ~what ~loc rev_fld_names sexp = + let fld_names_str = String.concat " " (List.rev rev_fld_names) in + let msg = sprintf "%s_of_sexp: %s: %s" loc what fld_names_str in + of_sexp_error msg sexp + +let record_duplicate_fields loc rev_fld_names sexp = + record_superfluous_fields ~what:"duplicate fields" ~loc rev_fld_names sexp + +let record_extra_fields loc rev_fld_names sexp = + record_superfluous_fields ~what:"extra fields" ~loc rev_fld_names sexp + +let rec record_get_undefined_loop fields = function + | [] -> String.concat " " (List.rev fields) + | (true, field) :: rest -> record_get_undefined_loop (field :: fields) rest + | _ :: rest -> record_get_undefined_loop fields rest + +let record_undefined_elements loc sexp lst = + let undefined = record_get_undefined_loop [] lst in + let msg = + sprintf "%s_of_sexp: the following record elements were undefined: %s" + loc undefined + in + of_sexp_error msg sexp + +let record_list_instead_atom loc sexp = + let msg = loc ^ "_of_sexp: list instead of atom for record expected" in + of_sexp_error msg sexp + +let record_poly_field_value loc sexp = + let msg = + loc ^ + "_of_sexp: cannot convert values of types resulting from polymorphic \ + record fields" + in + of_sexp_error msg sexp + + +(* Errors concerning polymorphic variants *) + +exception No_variant_match of string * Sexp.t + +let no_variant_match loc sexp = + raise (No_variant_match (loc ^ "_of_sexp", sexp)) + +let ptag_no_args loc sexp = + of_sexp_error ( + loc ^ "_of_sexp: polymorphic variant does not take arguments") sexp + +let ptag_incorrect_n_args loc cnstr sexp = + let msg = + sprintf + "%s_of_sexp: polymorphic variant tag %S has incorrect number of arguments" + loc cnstr + in + of_sexp_error msg sexp + +let nested_list_invalid_poly_var loc sexp = + of_sexp_error ( + loc ^ "_of_sexp: a nested list is an invalid polymorphic variant") sexp + +let empty_list_invalid_poly_var loc sexp = + of_sexp_error ( + loc ^ "_of_sexp: the empty list is an invalid polymorphic variant") sexp + +let silly_type loc sexp = + of_sexp_error (loc ^ "_of_sexp: trying to convert a silly type") sexp + +let empty_type loc sexp = + of_sexp_error (loc ^ "_of_sexp: trying to convert an empty type") sexp diff --git a/ocamlsexp/copyright.txt b/ocamlsexp/copyright.txt new file mode 100644 index 0000000..49c4471 --- /dev/null +++ b/ocamlsexp/copyright.txt @@ -0,0 +1,19 @@ +Most of this library was written by: + + Markus Mottl + +This work is derived from the library "Tywith", version 0.45. The library +"Tywith" was written and is distributed by: + + Martin Sandin + +The original license of "Tywith" can be found in the file +"LICENSE.Tywith". Files that were derived from "Tywith" contain a +reference to the original author. + +The following company has sponsored and has copyright in part of this work: + + Jane Street Holding, LLC + 1 New York Plaza, 33rd Floor + New York, NY 10004 + USA diff --git a/ocamlsexp/lexer.mll b/ocamlsexp/lexer.mll new file mode 100644 index 0000000..f4fcc61 --- /dev/null +++ b/ocamlsexp/lexer.mll @@ -0,0 +1,174 @@ +{ + (* File: lexer.mll + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + *) + + (** Lexer: Lexer Specification for S-expressions *) + + open Printf + open Lexing + open Parser + + let char_for_backslash = function + | 'n' -> '\n' + | 't' -> '\t' + | 'b' -> '\b' + | 'r' -> '\r' + | c -> c + + let double_nl = "\013\010" + + let dec_code c1 c2 c3 = + 100 * (Char.code c1 - 48) + 10 * (Char.code c2 - 48) + (Char.code c3 - 48) + + let hex_code c1 c2 = + let d1 = Char.code c1 in + let val1 = + if d1 >= 97 then d1 - 87 + else if d1 >= 65 then d1 - 55 + else d1 - 48 in + let d2 = Char.code c2 in + let val2 = + if d2 >= 97 then d2 - 87 + else if d2 >= 65 then d2 - 55 + else d2 - 48 in + val1 * 16 + val2 + + let found_newline lexbuf diff = + let curr_p = lexbuf.lex_curr_p in + lexbuf.lex_curr_p <- + { + curr_p with + pos_lnum = curr_p.pos_lnum + 1; + pos_bol = max 1 (curr_p.pos_cnum - diff); + } + + let get_lexeme_len lexbuf = lexbuf.lex_curr_pos - lexbuf.lex_start_pos +} + +let newline = ('\010' | '\013' | "\013\010") +let space = [' ' '\009' '\012'] +let whitespace = [' ' '\010' '\013' '\009' '\012'] +let backslash_escapes = ['\\' '"' '\'' 'n' 't' 'b' 'r'] + +rule main buf = parse + | newline { found_newline lexbuf 1; main buf lexbuf } + | space+ { main buf lexbuf } + | ';' [^ '\n' '\r']+ { main buf lexbuf } + | '(' { LPAREN } + | ')' { RPAREN } + | '"' + { + scan_string buf lexbuf; + let str = Buffer.contents buf in + Buffer.clear buf; + STRING str + } + | ([^ ';' '(' ')' '"'] # whitespace)+ as str { STRING str } + | eof { EOF } + +and scan_string buf = parse + | '"' { () } + | '\\' ['\010' '\013'] [' ' '\009']* + { + let len = get_lexeme_len lexbuf in + found_newline lexbuf (len - 2); + scan_string buf lexbuf + } + | '\\' "\013\010" [' ' '\009']* + { + let len = get_lexeme_len lexbuf in + found_newline lexbuf (len - 3); + scan_string buf lexbuf + } + | '\\' (backslash_escapes as c) + { + Buffer.add_char buf (char_for_backslash c); + scan_string buf lexbuf + } + | '\\' (['0'-'9'] as c1) (['0'-'9'] as c2) (['0'-'9'] as c3) + { + let v = dec_code c1 c2 c3 in + if v > 255 then ( + let pos = lexbuf.lex_curr_p in + let msg = + sprintf + "Sexplib.Lexer.scan_string: \ + illegal escape at line %d char %d: `\\%c%c%c'" + pos.pos_lnum (pos.pos_cnum - pos.pos_bol - 3) + c1 c2 c3 in + failwith msg); + Buffer.add_char buf (Char.chr v); + scan_string buf lexbuf + } + | '\\' 'x' (['0'-'9' 'a'-'f' 'A'-'F'] as c1) (['0'-'9' 'a'-'f' 'A'-'F'] as c2) + { + let v = hex_code c1 c2 in + if v > 255 then ( + let pos = lexbuf.lex_curr_p in + let msg = + sprintf + "Sexplib.Lexer.scan_string: \ + illegal escape at line %d char %d: `\\x%c%c'" + pos.pos_lnum (pos.pos_cnum - pos.pos_bol - 3) + c1 c2 in + failwith msg); + Buffer.add_char buf (Char.chr v); + scan_string buf lexbuf + } + | '\\' (_ as c) + { + Buffer.add_char buf '\\'; + Buffer.add_char buf c; + scan_string buf lexbuf + } + | ['\010' '\013'] as c + { + found_newline lexbuf 1; + Buffer.add_char buf c; + scan_string buf lexbuf + } + | "\013\010" + { + found_newline lexbuf 2; + Buffer.add_string buf double_nl; + scan_string buf lexbuf + } + | [^ '\\' '"']+ + { + let ofs = lexbuf.lex_start_pos in + let len = lexbuf.lex_curr_pos - ofs in + Buffer.add_substring buf lexbuf.lex_buffer ofs len; + scan_string buf lexbuf + } + | eof { failwith "Sexplib.Lexer.scan_string: unterminated string" } + +{ + let main ?buf = + let buf = + match buf with + | None -> Buffer.create 64 + | Some buf -> Buffer.clear buf; buf + in + main buf +} diff --git a/ocamlsexp/license-tywith.txt b/ocamlsexp/license-tywith.txt new file mode 100644 index 0000000..d08a6c1 --- /dev/null +++ b/ocamlsexp/license-tywith.txt @@ -0,0 +1,26 @@ +--------------------------------------------------------------------------- +Copyright (c) 2004 Martin Sandin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- diff --git a/ocamlsexp/license.txt b/ocamlsexp/license.txt new file mode 100644 index 0000000..67b72ca --- /dev/null +++ b/ocamlsexp/license.txt @@ -0,0 +1,520 @@ +The Library is distributed under the terms of the GNU Lesser General +Public License version 2.1 (included below). + +As a special exception to the GNU Lesser General Public License, you +may link, statically or dynamically, a "work that uses the Library" +with a publicly distributed version of the Library to produce an +executable file containing portions of the Library, and distribute that +executable file under terms of your choice, without any of the additional +requirements listed in clause 6 of the GNU Lesser General Public License. +By "a publicly distributed version of the Library", we mean either the +unmodified Library as distributed by the authors, or a modified version +of the Library that is distributed under the conditions defined in clause +3 of the GNU Lesser General Public License. This exception does not +however invalidate any other reasons why the executable file might be +covered by the GNU Lesser General Public License. + +--------------------------------------------------------------------------- + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 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. + +[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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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! diff --git a/ocamlsexp/modif-orig.txt b/ocamlsexp/modif-orig.txt new file mode 100644 index 0000000..9413d40 --- /dev/null +++ b/ocamlsexp/modif-orig.txt @@ -0,0 +1,223 @@ +I use in a different way sexplib. I don't like camlp4 but I like the +metaprogramming facility it offers. So I've found a in-the-middle +solution where I use camlp4 to generate code (via a small script +I have written, not included here for the moment), save the generated code +in a file (e.g commons/sexp_common.ml), which allows then to +completely remove the dependency to camlp4. This means among +other things that the file pa_sexp_conv.ml is not here, as +I include here only the runtime library for sexp, not the +camlp4 stuff. As I also didn't like their compilation process, +with the need for findlib, -pack options, etc, I have rewritten a Makefile. + +-- pad + +Here are the modifications I've made to the sexplib lib/ directory. + +diff -u -p -b -B -r -x .semantic.cache -x .depend -x CVS -x .hg -x .svn -x .git -x _darcs -x *.cm[iao] -x *.[oa] -x *.class /home/pad/reference/dev-ocaml/orig/ocamljane-orig/sexplib310-3.7.4/lib/ /home/pad/c-coccinelle/ocamlsexp +Only in /home/pad/reference/dev-ocaml/orig/ocamljane-orig/sexplib310-3.7.4/lib/: META +diff -u -p -b -B -r -x .semantic.cache -x .depend -x CVS -x .hg -x .svn -x .git -x _darcs -x '*.cm[iao]' -x '*.[oa]' -x '*.class' /home/pad/reference/dev-ocaml/orig/ocamljane-orig/sexplib310-3.7.4/lib/Makefile /home/pad/c-coccinelle/ocamlsexp/Makefile +--- /home/pad/reference/dev-ocaml/orig/ocamljane-orig/sexplib310-3.7.4/lib/Makefile 2009-03-09 19:52:09.000000000 -0500 ++++ /home/pad/c-coccinelle/ocamlsexp/Makefile 2009-04-15 22:04:59.000000000 -0500 +@@ -1,36 +1,166 @@ +-OCAMLMAKEFILE = ../OCamlMakefile ++############################################################################## ++# Variables ++############################################################################## + +-SOURCES = \ ++SRC= \ + type.ml \ +- parser.mly \ +- lexer.mll \ ++ parser.ml \ ++ lexer.ml \ + pre_sexp.ml \ + sexp_intf.ml \ +- sexp.mli sexp.ml \ +- path.mli path.ml \ +- conv.mli conv.ml \ ++ sexp.ml \ ++ path.ml \ ++ conv.ml \ + conv_error.ml +-LIB_PACK_NAME = sexplib +-INCDIRS = +camlp4 +-OCAMLFLAGS = -for-pack Sexplib +-PACKS = type-conv +-RESULT = sexplib +- +-TRASH = pa_sexp_conv.cmi pa_sexp_conv.cmo pa_sexp_conv.annot +- +-all: \ +- pack-byte-code pack-native-code \ +- sexplib.cma sexplib.cmxa \ +- pa_sexp_conv.cmi pa_sexp_conv.cmo +- +-LIBINSTALL_FILES = \ +- sexp.mli path.mli conv.mli \ +- sexplib.cmi sexplib.cma sexplib.cmxa sexplib.a \ +- pa_sexp_conv.cmi pa_sexp_conv.cmo ++#SOURCES = \ ++# parser.mly \ ++# lexer.mll \ ++# sexp.mli path.mli conv.mli + +-install: libinstall +-uninstall: libuninstall + +-clean:: clean-doc ++TARGET=sexplib1 ++TARGETPACK=sexplib ++#LIB_PACK_NAME = sexplib + +--include $(OCAMLMAKEFILE) ++############################################################################## ++# Generic variables ++############################################################################## ++ ++INCLUDES= ++#-I +camlp4 ++SYSLIBS= str.cma unix.cma bigarray.cma num.cma ++#INCDIRS = +camlp4 ++#pad: take care for bigarray otherwise get some caml_ba_get_1 error msg ++ ++############################################################################## ++#OCAMLFLAGS = -for-pack Sexplib ++ ++#PACKS = type-conv ++#RESULT = sexplib ++ ++#TRASH = pa_sexp_conv.cmi pa_sexp_conv.cmo pa_sexp_conv.annot ++ ++#all: \ ++# pack-byte-code pack-native-code \ ++# sexplib.cma sexplib.cmxa \ ++# pa_sexp_conv.cmi pa_sexp_conv.cmo ++# ++#LIBINSTALL_FILES = \ ++# sexp.mli path.mli conv.mli \ ++# sexplib.cmi sexplib.cma sexplib.cmxa sexplib.a \ ++# pa_sexp_conv.cmi pa_sexp_conv.cmo ++# ++#install: libinstall ++#uninstall: libuninstall ++# ++#clean:: clean-doc ++# ++#-include $(OCAMLMAKEFILE) ++ ++############################################################################## ++ ++############################################################################## ++# Generic variables ++############################################################################## ++ ++#dont use -custom, it makes the bytecode unportable. ++OCAMLCFLAGS= -g -dtypes # -w A ++#-for-pack Sexplib ++ ++# This flag is also used in subdirectories so don't change its name here. ++OPTFLAGS= ++ ++ ++OCAMLC=ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES) $(SYSINCLUDES) -thread ++OCAMLOPT=ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES) $(SYSINCLUDES) -thread ++OCAMLLEX=ocamllex #-ml # -ml for debugging lexer, but slightly slower ++OCAMLYACC=ocamlyacc -v ++OCAMLDEP=ocamldep $(INCLUDES) ++OCAMLMKTOP=ocamlmktop -g -custom $(INCLUDES) -thread ++ ++#-ccopt -static ++STATIC= ++ ++ ++############################################################################## ++# Top rules ++############################################################################## ++ ++OBJS = $(SRC:.ml=.cmo) ++OPTOBJS = $(SRC:.ml=.cmx) ++ ++all: $(TARGET).cma $(TARGETPACK).cmo ++all.opt: $(TARGET).cmxa ++ ++$(TARGET).cma: $(OBJS) ++ $(OCAMLC) -a -o $(TARGET).cma $(OBJS) ++ ++$(TARGET).cmxa: $(OPTOBJS) $(LIBS:.cma=.cmxa) ++ $(OCAMLOPT) -a -o $(TARGET).cmxa $(OPTOBJS) ++ ++$(TARGET).top: $(OBJS) $(LIBS) ++ $(OCAMLMKTOP) -o $(TARGET).top $(SYSLIBS) $(LIBS) $(OBJS) ++ ++clean:: ++ rm -f $(TARGET).top ++ ++ ++ ++$(TARGETPACK).cmo: $(OBJS) ++ $(OCAMLC) -pack -o $(TARGETPACK).cmo $(OBJS) ++ ++# special handling, fun that they use cpp whereas they claim camplp4 can do everything ++pre_sexp.cmo: pre_sexp.ml ++ $(OCAMLC) -pp cpp -c $< ++ ++pre_sexp.cmx: pre_sexp.ml ++ $(OCAMLOPT) -pp cpp -c $< ++ ++ ++ ++lexer.ml: lexer.mll ++ $(OCAMLLEX) $< ++clean:: ++ rm -f lexer.ml ++beforedepend:: lexer.ml ++ ++ ++parser.ml parser.mli: parser.mly ++ $(OCAMLYACC) $< ++clean:: ++ rm -f parser.ml parser.mli parser.output ++beforedepend:: parser.ml parser.mli ++ ++ ++ ++############################################################################## ++# Generic rules ++############################################################################## ++ ++.SUFFIXES: .ml .mli .cmo .cmi .cmx ++ ++.ml.cmo: ++ $(OCAMLC) -c $< ++.mli.cmi: ++ $(OCAMLC) -c $< ++.ml.cmx: ++ $(OCAMLOPT) -c $< ++ ++.ml.mldepend: ++ $(OCAMLC) -i $< ++ ++clean:: ++ rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot ++clean:: ++ rm -f *~ .*~ gmon.out #*# ++ ++beforedepend:: ++ ++# need also -pp cpp here ++depend:: beforedepend ++ $(OCAMLDEP) -pp cpp *.mli *.ml > .depend ++ ++distclean: ++ rm -f .depend ++ ++-include .depend +Only in /home/pad/reference/dev-ocaml/orig/ocamljane-orig/sexplib310-3.7.4/lib/: OMakefile +Only in /home/pad/c-coccinelle/ocamlsexp: copyright.txt +Only in /home/pad/c-coccinelle/ocamlsexp: license-tywith.txt +Only in /home/pad/c-coccinelle/ocamlsexp: license.txt +Only in /home/pad/reference/dev-ocaml/orig/ocamljane-orig/sexplib310-3.7.4/lib/: pa_sexp_conv.ml +Only in /home/pad/reference/dev-ocaml/orig/ocamljane-orig/sexplib310-3.7.4/lib/: pa_sexp_conv.mli + +Diff finished. Thu Apr 16 10:57:39 2009 diff --git a/ocamlsexp/parser.mly b/ocamlsexp/parser.mly new file mode 100644 index 0000000..f53a559 --- /dev/null +++ b/ocamlsexp/parser.mly @@ -0,0 +1,75 @@ +%{ + (* File: parser.mly + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + *) + + (** Parser: Grammar Specification for Parsing S-expressions *) + + open Lexing + + let parse_failure what = + let pos = symbol_start_pos () in + let msg = + Printf.sprintf "Sexplib.Parser: failed to parse line %d char %d: %s" + pos.pos_lnum (pos.pos_cnum - pos.pos_bol) what in + failwith msg +%} + +%token STRING +%token LPAREN RPAREN EOF + +%start sexp +%type sexp + +%start sexp_opt +%type sexp_opt + +%start sexps +%type sexps + +%start rev_sexps +%type rev_sexps + +%% + +sexp + : STRING { Type.Atom $1 } + | LPAREN RPAREN { Type.List [] } + | LPAREN rev_sexps_aux RPAREN { Type.List (List.rev $2) } + | error { parse_failure "sexp" } + +sexp_opt + : sexp { Some $1 } + | EOF { None } + +rev_sexps_aux + : sexp { [$1] } + | rev_sexps_aux sexp { $2 :: $1 } + +rev_sexps + : rev_sexps_aux { $1 } + | EOF { [] } + +sexps + : rev_sexps_aux { List.rev $1 } + | EOF { [] } diff --git a/ocamlsexp/path.ml b/ocamlsexp/path.ml new file mode 100644 index 0000000..f6eafa8 --- /dev/null +++ b/ocamlsexp/path.ml @@ -0,0 +1,175 @@ +(* File: path.ml + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(* Path: Module for Substitutions within S-expressions *) + +open Format + +open Sexp + +type el = Pos of int | Match of string * int | Rec of string +type t = el list + +let illegal_atom loc sexp = + failwith (sprintf "Path.%s: illegal atom: %s" loc (Sexp.to_string sexp)) + +let extract_pos_lst loc sexp ix lst = + let rec loop acc n = function + | [] -> + let sexp_str = Sexp.to_string sexp in + failwith ( + sprintf "Path.%s: illegal index %d in: %s" loc ix sexp_str) + | h :: t -> + if n = 0 then + let subst = function + | None -> List.rev_append acc t + | Some x -> List.rev_append acc (x :: t) in + subst, h + else loop (h :: acc) (n - 1) t in + loop [] ix lst + +let extract_pos n = function + | List lst as sexp -> + let subst, el = extract_pos_lst "extract_pos" sexp n lst in + (fun x -> List (subst x)), el + | Atom _ as sexp -> illegal_atom "extract_pos" sexp + +let extract_match tag arg_ix = function + | List (Atom str as sexp :: args) when str = tag -> + let subst, el = extract_pos_lst "extract_match" (List args) arg_ix args in + (fun maybe_x -> List (sexp :: subst maybe_x)), el + | List _ as sexp -> + let sexp_str = Sexp.to_string sexp in + failwith ("Path.extract_match: unexpected nested list in: " ^ sexp_str) + | Atom _ as sexp -> illegal_atom "extract_match" sexp + +let extract_rec key = function + | List lst as sexp -> + let rec loop acc = function + | [] -> + let sexp_str = Sexp.to_string sexp in + failwith ( + sprintf "Path.extract_rec: key \"%s\" not found in: %s" + key sexp_str) + | List [Atom str as sexp; v] :: rest when str = key -> + let subst x = List (List.rev_append acc (List [sexp; x] :: rest)) in + subst, v + | h :: t -> loop (h :: acc) t in + loop [] lst + | Atom _ as sexp -> illegal_atom "extract_rec" sexp + +let id x = x + +let rec subst_option (sup_subst, el) rest = + let sub_subst, sub_el = subst_path el rest in + let subst x = sup_subst (Some (sub_subst x)) in + subst, sub_el + +and subst_path sexp = function + | Pos n :: t -> subst_option (extract_pos n sexp) t + | Match (tag, arg_ix) :: t -> subst_option (extract_match tag arg_ix sexp) t + | Rec key :: rest -> + let rec_subst, el = extract_rec key sexp in + let sub_subst, sub_el = subst_path el rest in + let subst x = rec_subst (sub_subst x) in + subst, sub_el + | [] -> id, sexp + +let implode lst = + let len = List.length lst in + let str = String.create len in + let rec loop ix = function + | h :: t -> str.[ix] <- h; loop (ix + 1) t + | [] -> str in + loop 0 lst + +let fail_parse msg = failwith ("Path.parse: " ^ msg) + +let parse str = + let len = String.length str in + if len = 0 then fail_parse "path empty" + else + let rec loop acc dot_ix = + match str.[dot_ix] with + | '.' -> + let dot_ix1 = dot_ix + 1 in + if dot_ix1 = len then List.rev acc + else + let rec parse_dot acc str_acc ix = + if ix = len then + List.rev_append acc [Rec (implode (List.rev str_acc))] + else + match str.[ix] with + | '[' -> + let rec parse_index index_acc ix = + if ix = len then fail_parse "EOF reading index" + else + match str.[ix], index_acc with + | '0'..'9' as c, None -> + parse_index (Some (int_of_char c - 48)) (ix + 1) + | '0'..'9' as c, Some index_acc -> + let new_index_acc = + Some (10 * index_acc + int_of_char c - 48) in + parse_index new_index_acc (ix + 1) + | ']', None -> fail_parse "empty index" + | ']', Some index_acc -> + let path_el = + if str_acc = [] then Pos index_acc + else + Match (implode (List.rev str_acc), index_acc) in + let ix1 = ix + 1 in + if ix1 = len then List.rev_append acc [path_el] + else loop (path_el :: acc) ix1 + | c, _ -> + fail_parse ( + sprintf "illegal character in index: %c" c) in + parse_index None (ix + 1) + | '\\' -> + let ix1 = ix + 1 in + if ix1 = len then fail_parse "EOF after escape" + else parse_dot acc (str.[ix1] :: str_acc) (ix + 1) + | '.' -> + if str_acc = [] then fail_parse "double '.'"; + let path_el = Rec (implode (List.rev str_acc)) in + parse_dot (path_el :: acc) [] (ix + 1) + | c -> parse_dot acc (c :: str_acc) (ix + 1) in + parse_dot acc [] dot_ix1 + | c -> fail_parse (sprintf "'.' expected; got '%c'" c) in + loop [] 0 + +let get_subst path str sexp = + let path = + match path, str with + | Some path, _ -> path + | None, Some str -> parse str + | None, None -> [] in + subst_path sexp path + +let get ?path ?str sexp = snd (get_subst path str sexp) + +let replace ?path ?str sexp ~subst = + let subst_fun, _ = get_subst path str sexp in + subst_fun subst + +let replace_no_path ~str sexp ~subst = replace ~str sexp ~subst diff --git a/ocamlsexp/path.mli b/ocamlsexp/path.mli new file mode 100644 index 0000000..7375885 --- /dev/null +++ b/ocamlsexp/path.mli @@ -0,0 +1,116 @@ +(* File: path.mli + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(* WL YM for MM: Some other functions that would be useful: get_opt, insert_record_field, + remove_record_field *) + +(** Path: Module for Substitutions within S-expressions *) + +(** {6 Types} *) + +(** Type of substitution elements *) +type el = + | Pos of int (** [Pos n] denotes [n]th element in a tuple *) + | Match of string * int + (** [Match (tag, n)] denotes [n]th argument of sum matching [tag] *) + | Rec of string (** [Rec name] denotes the record field having [name] *) + +(** Type of substitution paths *) +type t = el list + + +(** {6 High-level functions} *) + +val parse : string -> t +(** [parse str] @return a substitution path represented by string [str]. + + Syntax: + + "." -> + separates path elements; must be present at start of string. + + "\[4\]" -> + specifies the 4th element in a tuple. + + "some_tag\[4\]" -> + tries to match [some_tag], then denotes its 4th argument. + + "name" -> + denotes record field having [name] + + Example from test code: + + ".t.x.B[1]" -> choose record field with name [t], then subfield + [x]. Match this value against [B], and denote its first argument. +*) + +val get : ?path : t -> ?str : string -> Sexp.t -> Sexp.t +(** [get ?path ?str sexp] if [path] is provided, use it as path. + Otherwise, if [str] is provided, parse it as a path. If neither + is provided, assume an empty path. @return the sub-expression from + S-expression [sexp] denoted by the path. *) + +val replace : ?path : t -> ?str : string -> Sexp.t -> subst : Sexp.t -> Sexp.t +(** [replace ?path ?str sexp ~subst] like [get], but does not extract + a sub-expression but substitutes it with [subst]. @return resulting + S-expression. *) + +val replace_no_path : str : string -> Sexp.t -> subst : Sexp.t -> Sexp.t +(** [replace_no_path ~str sexp ~subst] like [replace], but does not take + optional arguments. [str] must be specified. *) + +val subst_path : Sexp.t -> t -> (Sexp.t -> Sexp.t) * Sexp.t +(** [subst_path sexp path] @return the tuple [(subst, sub)], where [subst] + is a function that returns an S-expression in which the subexpression + denoted by [path] in [sexp] has been substituted by its argument. + [sub] is the denoted subexpression. Note that [subst sub = sexp]. *) + + +(** {6 Low-level functions} *) + +val extract_pos : int -> Sexp.t -> (Sexp.t option -> Sexp.t) * Sexp.t +(** [extract_pos n sexp] @return the tuple [(subst, sub)], where [subst] + is a function that returns an S-expression in which the subexpression + denoted at position [n] in [sexp], which must be a list, has been + substituted by [value] if the optional argument is [Some value], or + removes the denoted subexpression if the optional argument is [None]. + [sub] is the denoted subexpression. Note that [subst (Some sub) = + sexp]. *) + +val extract_match : + string -> int -> Sexp.t -> (Sexp.t option -> Sexp.t) * Sexp.t +(** [extract_match tag n sexp] @return the tuple [(subst, sub)], where + [subst] is a function that returns an S-expression in which the + subexpression denoted by matching [tag] and taking its [n]th argument + in [sexp] has been substituted by [value] if the argument is [Some + value], or removes the denoted subexpression if the optional argument + is [None]. [sub] is the denoted subexpression. Note that [subst + (Some sub) = sexp]. *) + +val extract_rec : string -> Sexp.t -> (Sexp.t -> Sexp.t) * Sexp.t +(** [extract_rec name sexp] @return the tuple [(subst, sub)], where + [subst] is a function that returns an S-expression in which the + subexpression denoted by matching field name [name] in [sexp] has + been substituted by its argument. [sub] is the denoted subexpression. + Note that [subst (Some sub) = sexp]. *) diff --git a/ocamlsexp/pre_sexp.ml b/ocamlsexp/pre_sexp.ml new file mode 100644 index 0000000..dad65cc --- /dev/null +++ b/ocamlsexp/pre_sexp.ml @@ -0,0 +1,680 @@ +(*pp cpp *) + +(* File: sexp.ml + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(* Sexp: Module for handling S-expressions (I/O, etc.) *) + +open Format + +include Type + +(* Default indentation level for human-readable conversions *) + +let default_indent = ref 1 + +(* Escaping of strings used as atoms in S-expressions *) + +let is_special_char c = + c <= ' ' || c = '"' || c = '(' || c = ')' || c = ';' || c = '\\' + +let must_escape str = + let len = String.length str in + len = 0 || + let rec loop ix = is_special_char str.[ix] || ix > 0 && loop (ix - 1) in + loop (len - 1) + +let maybe_esc_str str = + if must_escape str then + let estr = String.escaped str in + let elen = String.length estr in + let res = String.create (elen + 2) in + String.blit estr 0 res 1 elen; + res.[0] <- '"'; + res.[elen + 1] <- '"'; + res + else str + +let pp_maybe_esc_str ppf str = pp_print_string ppf (maybe_esc_str str) + +(* Output of S-expressions to formatters *) + +let rec pp_hum_indent indent ppf = function + | Atom str -> pp_maybe_esc_str ppf str + | List (h :: t) -> + pp_open_box ppf indent; + pp_print_string ppf "("; + pp_hum_indent indent ppf h; + pp_hum_rest indent ppf t + | List [] -> pp_print_string ppf "()" + +and pp_hum_rest indent ppf = function + | h :: t -> + pp_print_space ppf (); + pp_hum_indent indent ppf h; + pp_hum_rest indent ppf t + | [] -> + pp_print_string ppf ")"; + pp_close_box ppf () + +let rec pp_mach_internal may_need_space ppf = function + | Atom str -> + let str' = maybe_esc_str str in + let new_may_need_space = str' == str in + if may_need_space && new_may_need_space then pp_print_string ppf " "; + pp_print_string ppf str'; + new_may_need_space + | List (h :: t) -> + pp_print_string ppf "("; + let may_need_space = pp_mach_internal false ppf h in + pp_mach_rest may_need_space ppf t; + false + | List [] -> pp_print_string ppf "()"; false + +and pp_mach_rest may_need_space ppf = function + | h :: t -> + let may_need_space = pp_mach_internal may_need_space ppf h in + pp_mach_rest may_need_space ppf t + | [] -> pp_print_string ppf ")" + +let pp_hum ppf sexp = pp_hum_indent !default_indent ppf sexp + +let pp_mach ppf sexp = ignore (pp_mach_internal false ppf sexp) +let pp = pp_mach + +(* Sexp size *) + +let rec size_loop (v, c as acc) = function + | Atom str -> v + 1, c + String.length str + | List lst -> List.fold_left size_loop acc lst + +let size sexp = size_loop (0, 0) sexp + + +(* Buffer conversions *) + +let to_buffer_hum ~buf ?(indent = !default_indent) sexp = + Format.bprintf buf "%a@?" (pp_hum_indent indent) sexp + +let to_buffer_mach ~buf sexp = + let rec loop may_need_space = function + | Atom str -> + let str' = maybe_esc_str str in + let new_may_need_space = str' == str in + if may_need_space && new_may_need_space then Buffer.add_char buf ' '; + Buffer.add_string buf str'; + new_may_need_space + | List (h :: t) -> + Buffer.add_char buf '('; + let may_need_space = loop false h in + loop_rest may_need_space t; + false + | List [] -> Buffer.add_string buf "()"; false + and loop_rest may_need_space = function + | h :: t -> + let may_need_space = loop may_need_space h in + loop_rest may_need_space t + | [] -> Buffer.add_char buf ')' in + ignore (loop false sexp) + +let to_buffer = to_buffer_mach + + +(* Output of S-expressions to I/O-channels *) + +let buffer () = Buffer.create 4096 + +let with_new_buffer oc f = + let buf = buffer () in + f buf; + Buffer.output_buffer oc buf + +let output_hum oc sexp = + with_new_buffer oc (fun buf -> to_buffer_hum sexp ~buf) + +let output_hum_indent indent oc sexp = + with_new_buffer oc (fun buf -> to_buffer_hum ~indent sexp ~buf) + +let output_mach oc sexp = + with_new_buffer oc (fun buf -> to_buffer_mach sexp ~buf) + +let output = output_mach + + +(* String conversions *) + +let to_string_hum ?indent sexp = + let buf = buffer () in + to_buffer_hum ?indent sexp ~buf; + Buffer.contents buf + +let to_string_mach sexp = + let buf = buffer () in + to_buffer_mach sexp ~buf; + Buffer.contents buf + +let to_string = to_string_mach + + +(* Scan functions *) + +let scan_sexp ?buf lexbuf = Parser.sexp (Lexer.main ?buf) lexbuf +let scan_sexps ?buf lexbuf = Parser.sexps (Lexer.main ?buf) lexbuf + +let get_main_buf buf = + let buf = + match buf with + | None -> Buffer.create 64 + | Some buf -> buf in + Lexer.main ~buf + +let scan_fold_sexps ?buf ~f ~init lexbuf = + let main = get_main_buf buf in + let rec loop acc = + match Parser.sexp_opt main lexbuf with + | None -> acc + | Some sexp -> loop (f sexp acc) in + loop init + +let scan_iter_sexps ?buf ~f lexbuf = + let main = get_main_buf buf in + let rec loop () = + match Parser.sexp_opt main lexbuf with + | None -> () + | Some sexp -> f sexp; loop () in + loop () + +let scan_cnv_sexps ?buf ~f lexbuf = + let coll sexp acc = f sexp :: acc in + List.rev (scan_fold_sexps ?buf ~f:coll ~init:[] lexbuf) + + +(* Partial parsing *) + +type parse_pos = + { + mutable text_line : int; (** Line position in parsed text *) + mutable text_char : int; (** Character position in parsed text *) + mutable buf_pos : int; (** Reading position in buffer *) + } + +type 'a parse_result = Done of t * parse_pos | Cont of bool * 'a parse_fun +and 'a parse_fun = pos : int -> len : int -> 'a -> 'a parse_result + +type parse_state = + { + parse_pos : parse_pos; + mutable pstack : t list list; + pbuf : Buffer.t; + } + +type parse_error = + { + location : string; + err_msg : string; + parse_state : parse_state; + } + +exception ParseError of parse_error + +let bump_text_line { parse_pos = parse_pos } = + parse_pos.text_line <- parse_pos.text_line + 1; + parse_pos.text_char <- 1 + +let bump_text_pos { parse_pos = parse_pos } = + parse_pos.text_char <- parse_pos.text_char + 1 + +let bump_pos_cont state str ~max_pos ~pos cont = + bump_text_pos state; + cont state str ~max_pos ~pos:(pos + 1) + +let bump_line_cont state str ~max_pos ~pos cont = + bump_text_line state; + cont state str ~max_pos ~pos:(pos + 1) + +let add_bump bump state str ~max_pos ~pos c cont = + Buffer.add_char state.pbuf c; + bump state; + cont state str ~max_pos ~pos:(pos + 1) + +let add_bump_pos state str ~max_pos ~pos c cont = + add_bump bump_text_pos state str ~max_pos ~pos c cont + +let add_bump_line state str ~max_pos ~pos c cont = + add_bump bump_text_line state str ~max_pos ~pos c cont + +let mk_parse_pos { parse_pos = parse_pos } buf_pos = + parse_pos.buf_pos <- buf_pos; + parse_pos + +let bump_found_atom bump state str ~max_pos ~pos cont = + let pbuf = state.pbuf in + let atom = Atom (Buffer.contents pbuf) in + match state.pstack with + | [] -> Done (atom, mk_parse_pos state pos) + | rev_sexp_lst :: sexp_stack -> + Buffer.clear pbuf; + state.pstack <- (atom :: rev_sexp_lst) :: sexp_stack; + bump state; + cont state str ~max_pos ~pos:(pos + 1) + +let raise_parse_error state location err_msg = + let parse_error = + { + location = location; + err_msg = err_msg; + parse_state = state; + } + in + raise (ParseError parse_error) + +let raise_unexpected_char state ~loc pos c = + let err_msg = sprintf "unexpected character: '%c'" c in + let parse_pos = state.parse_pos in + parse_pos.buf_pos <- pos; + parse_pos.text_char <- parse_pos.text_char + 1; + raise_parse_error state loc err_msg + +(* Macro for generating parsers *) +#define MK_PARSER(TYPE, GET_LEN, PARSE, GET_CHAR) \ + let check_str_bounds loc ~pos ~len (str : TYPE) = \ + if pos < 0 then invalid_arg (loc ^ ": pos < 0"); \ + if len < 0 then invalid_arg (loc ^ ": len < 0"); \ + let str_len = GET_LEN str in \ + let pos_len = pos + len in \ + if pos_len > str_len then invalid_arg (loc ^ ": pos + len > str_len"); \ + pos_len - 1 \ + \ + let mk_cont name cont state = \ + let ws_only = state.pstack = [] && Buffer.length state.pbuf = 0 in \ + let parse_fun ~pos ~len str = \ + let max_pos = check_str_bounds name ~pos ~len str in \ + cont state str ~max_pos ~pos \ + in \ + Cont (ws_only, parse_fun) \ + \ + let rec PARSE state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse" PARSE state \ + else \ + match GET_CHAR with \ + | '(' -> \ + state.pstack <- [] :: state.pstack; \ + bump_pos_cont state str ~max_pos ~pos PARSE \ + | ')' as c -> \ + (match state.pstack with \ + | [] -> raise_unexpected_char state ~loc:"parse" pos c \ + | rev_sexp_lst :: sexp_stack -> \ + let sexp = List (List.rev rev_sexp_lst) in \ + match sexp_stack with \ + | [] -> Done (sexp, mk_parse_pos state (pos + 1)) \ + | higher_rev_sexp_lst :: higher_sexp_stack -> \ + state.pstack <- \ + (sexp :: higher_rev_sexp_lst) :: higher_sexp_stack; \ + bump_pos_cont state str ~max_pos ~pos PARSE) \ + | ' ' | '\009' | '\012' -> bump_pos_cont state str ~max_pos ~pos PARSE \ + | '\010' -> bump_line_cont state str ~max_pos ~pos PARSE \ + | '\013' -> bump_line_cont state str ~max_pos ~pos parse_nl \ + | ';' -> bump_pos_cont state str ~max_pos ~pos parse_comment \ + | '"' -> bump_pos_cont state str ~max_pos ~pos parse_quoted \ + | c -> add_bump_pos state str ~max_pos ~pos c parse_atom \ + \ + and parse_nl state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse_nl" parse_nl state \ + else \ + let pos = if GET_CHAR = '\010' then pos + 1 else pos in \ + PARSE state str ~max_pos ~pos \ + \ + and parse_comment state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse_comment" parse_comment state \ + else \ + match GET_CHAR with \ + | '\010' -> bump_line_cont state str ~max_pos ~pos PARSE \ + | '\013' -> bump_line_cont state str ~max_pos ~pos parse_nl \ + | _ -> bump_pos_cont state str ~max_pos ~pos parse_comment \ + \ + and parse_atom state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse_atom" parse_atom state \ + else \ + match GET_CHAR with \ + | ' ' | '\009' | '\012' -> \ + bump_found_atom bump_text_pos state str ~max_pos ~pos PARSE \ + | '(' -> \ + let pbuf = state.pbuf in \ + let atom = Atom (Buffer.contents pbuf) in \ + (match state.pstack with \ + | [] -> Done (atom, mk_parse_pos state pos) \ + | rev_sexp_lst :: sexp_stack -> \ + Buffer.clear pbuf; \ + state.pstack <- [] :: (atom :: rev_sexp_lst) :: sexp_stack; \ + bump_pos_cont state str ~max_pos ~pos PARSE) \ + | ')' -> \ + let pbuf = state.pbuf in \ + let atom = Atom (Buffer.contents pbuf) in \ + (match state.pstack with \ + | [] -> Done (atom, mk_parse_pos state pos) \ + | rev_sexp_lst :: sexp_stack -> \ + let sexp = List (List.rev_append rev_sexp_lst [atom]) in \ + match sexp_stack with \ + | [] -> Done (sexp, mk_parse_pos state (pos + 1)) \ + | higher_rev_sexp_lst :: higher_sexp_stack -> \ + Buffer.clear pbuf; \ + state.pstack <- \ + (sexp :: higher_rev_sexp_lst) :: higher_sexp_stack; \ + bump_pos_cont state str ~max_pos ~pos PARSE) \ + | '\010' -> bump_found_atom bump_text_line state str ~max_pos ~pos PARSE \ + | '\013' -> \ + bump_found_atom bump_text_line state str ~max_pos ~pos parse_nl \ + | ';' -> \ + bump_found_atom bump_text_pos state str ~max_pos ~pos parse_comment \ + | '"' -> \ + bump_found_atom bump_text_pos state str ~max_pos ~pos parse_quoted \ + | c -> add_bump_pos state str ~max_pos ~pos c parse_atom \ + \ + and parse_quoted state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse_quoted" parse_quoted state \ + else \ + match GET_CHAR with \ + | '"' -> \ + let pbuf = state.pbuf in \ + let atom = Atom (Buffer.contents pbuf) in \ + (match state.pstack with \ + | [] -> Done (atom, mk_parse_pos state (pos + 1)) \ + | rev_sexp_lst :: sexp_stack -> \ + Buffer.clear pbuf; \ + state.pstack <- (atom :: rev_sexp_lst) :: sexp_stack; \ + bump_pos_cont state str ~max_pos ~pos PARSE) \ + | '\\' -> bump_pos_cont state str ~max_pos ~pos parse_escaped \ + | '\010' as c -> add_bump_line state str ~max_pos ~pos c parse_quoted \ + | '\013' as c -> add_bump_line state str ~max_pos ~pos c parse_quoted_nl \ + | c -> add_bump_pos state str ~max_pos ~pos c parse_quoted \ + \ + and parse_quoted_nl state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse_quoted_nl" parse_quoted_nl state \ + else \ + let pos = \ + let c = '\010' in \ + if GET_CHAR = c then ( \ + Buffer.add_char state.pbuf c; \ + pos + 1 \ + ) \ + else pos \ + in \ + parse_quoted state str ~max_pos ~pos \ + \ + and parse_escaped state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse_escaped" parse_escaped state \ + else \ + match GET_CHAR with \ + | '\010' -> bump_line_cont state str ~max_pos ~pos parse_skip_ws \ + | '\013' -> bump_line_cont state str ~max_pos ~pos parse_skip_ws_nl \ + | '0' .. '9' as c -> \ + bump_text_pos state; \ + let d = Char.code c - 48 in \ + parse_dec state str ~max_pos ~pos:(pos + 1) ~count:2 ~d \ + | 'x' -> \ + bump_text_pos state; \ + parse_hex state str ~max_pos ~pos:(pos + 1) ~count:2 ~d:0 \ + | ('\\' | '"' | '\'' ) as c -> \ + add_bump_pos state str ~max_pos ~pos c parse_quoted \ + | 'n' -> add_bump_pos state str ~max_pos ~pos '\n' parse_quoted \ + | 't' -> add_bump_pos state str ~max_pos ~pos '\t' parse_quoted \ + | 'b' -> add_bump_pos state str ~max_pos ~pos '\b' parse_quoted \ + | 'r' -> add_bump_pos state str ~max_pos ~pos '\r' parse_quoted \ + | c -> \ + Buffer.add_char state.pbuf '\\'; \ + add_bump_pos state str ~max_pos ~pos c parse_quoted \ + \ + and parse_skip_ws state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse_skip_ws" parse_skip_ws state \ + else \ + match GET_CHAR with \ + | ' ' | '\009' -> bump_pos_cont state str ~max_pos ~pos parse_skip_ws \ + | _ -> parse_quoted state str ~max_pos ~pos \ + \ + and parse_skip_ws_nl state str ~max_pos ~pos = \ + if pos > max_pos then mk_cont "parse_skip_ws_nl" parse_skip_ws_nl state \ + else \ + let pos = if GET_CHAR = '\010' then pos + 1 else pos in \ + parse_skip_ws state str ~max_pos ~pos \ + \ + and parse_dec state str ~max_pos ~pos ~count ~d = \ + if pos > max_pos then mk_cont "parse_dec" (parse_dec ~count ~d) state \ + else \ + match GET_CHAR with \ + | '0' .. '9' as c -> \ + let d = 10 * d + Char.code c - 48 in \ + if count = 1 then \ + if d > 255 then \ + let err_msg = sprintf "illegal decimal escape: \\%d" d in \ + raise_parse_error state "parse_dec" err_msg \ + else \ + add_bump_pos state str ~max_pos ~pos (Char.chr d) parse_quoted \ + else ( \ + bump_text_pos state; \ + parse_dec state str ~max_pos ~pos:(pos + 1) ~count:(count - 1) ~d) \ + | c -> raise_unexpected_char state ~loc:"parse_dec" pos c \ + \ + and parse_hex state str ~max_pos ~pos ~count ~d = \ + if pos > max_pos then mk_cont "parse_hex" (parse_hex ~count ~d) state \ + else \ + match GET_CHAR with \ + | '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' as c -> \ + let corr = \ + if c >= 'a' then 87 \ + else if c >= 'A' then 55 \ + else 48 \ + in \ + let d = 16 * d + Char.code c - corr in \ + if count = 1 then \ + if d > 255 then \ + let err_msg = sprintf "illegal hexadecimal escape: \\%x" d in \ + raise_parse_error state "parse_hex" err_msg \ + else \ + add_bump_pos state str ~max_pos ~pos (Char.chr d) parse_quoted \ + else ( \ + bump_text_pos state; \ + parse_hex state str ~max_pos ~pos:(pos + 1) ~count:(count - 1) ~d) \ + | c -> raise_unexpected_char state ~loc:"parse_hex" pos c \ + \ + let PARSE ?(text_line = 1) ?(text_char = 1) ?(pos = 0) ?len str = \ + let len = \ + match len with \ + | Some len -> len \ + | None -> GET_LEN str - pos \ + in \ + let max_pos = check_str_bounds "parse" ~pos ~len str in \ + let state = \ + { \ + parse_pos = \ + { \ + text_line = text_line; \ + text_char = text_char; \ + buf_pos = pos; \ + }; \ + pstack = []; \ + pbuf = Buffer.create 128; \ + } \ + in \ + PARSE state str ~max_pos ~pos + +MK_PARSER(string, String.length, parse_str, str.[pos]) + +let parse = parse_str + +let plain_parse ~pos ~len str = parse ~pos ~len str + + +(* Partial parsing from bigstrings *) + +(* NOTE: this is really an awful duplication of the code for parsing + strings, but since OCaml does not inline higher-order functions known + at compile, other solutions would sacrifice a lot of efficiency. *) + +open Bigarray + +type bstr = (char, int8_unsigned_elt, c_layout) Array1.t + +MK_PARSER(bstr, Array1.dim, parse_bstr, str.{pos}) + + +(* Input functions *) + +let reraise_parse_error pe global_pos = + let ps = pe.parse_state in + let ppos = ps.parse_pos in + let new_ppos = { ppos with buf_pos = global_pos + ppos.buf_pos } in + let new_ps = { ps with parse_pos = new_ppos } in + let new_pe = { pe with parse_state = new_ps } in + raise (ParseError new_pe) + +let input_sexp ?text_line ?text_char ?(buf_pos = 0) ic = + let buf = String.create 1 in + let rec loop this_parse = + let c = input_char ic in + buf.[0] <- c; + let parse_res = + try this_parse ~pos:0 ~len:1 buf + with ParseError pe -> reraise_parse_error pe buf_pos + in + match parse_res with + | Done (sexp, _) -> sexp + | Cont (_, this_parse) -> loop this_parse + in + let this_parse ~pos ~len str = parse ?text_line ?text_char ~pos ~len str in + loop this_parse + +let input_rev_sexps + ?text_line ?text_char + ?(buf_pos = 0) ?(buf = String.create 8192) ic = + let rev_sexps_ref = ref [] in + let buf_len = String.length buf in + let is_incomplete_ref = ref false in + let buf_pos_ref = ref buf_pos in + let rec loop this_parse pos len = + if len > 0 then + let parse_res = + try this_parse ~pos ~len buf + with ParseError pe -> reraise_parse_error pe !buf_pos_ref + in + match parse_res with + | Done (sexp, new_pos) -> + rev_sexps_ref := sexp :: !rev_sexps_ref; + let n_parsed = new_pos.buf_pos - pos in + is_incomplete_ref := false; + let text_line = new_pos.text_line in + let text_char = new_pos.text_char in + let this_parse ~pos ~len str = + parse ~text_line ~text_char ~pos ~len str + in + if n_parsed = len then + let new_len = input ic buf 0 buf_len in + buf_pos_ref := !buf_pos_ref + new_pos.buf_pos; + loop this_parse 0 new_len + else loop this_parse new_pos.buf_pos (len - n_parsed) + | Cont (ws_only, this_parse) -> + is_incomplete_ref := not ws_only; + buf_pos_ref := !buf_pos_ref + len + pos; + loop this_parse 0 (input ic buf 0 buf_len) + else if !is_incomplete_ref then raise End_of_file + else !rev_sexps_ref + in + let this_parse ~pos ~len str = parse ?text_line ?text_char ~pos ~len str in + loop this_parse 0 (input ic buf 0 buf_len) + +let input_sexps ?text_line ?text_char ?buf_pos ?buf ic = + let rev_sexps = input_rev_sexps ?text_line ?text_char ?buf_pos ?buf ic in + List.rev rev_sexps + +(* of_string and of_bstr *) + +let of_string_bstr loc this_parse ws_buf get_len get_sub str = + match this_parse str with + | Done (_, { buf_pos = buf_pos }) when buf_pos <> get_len str -> + let prefix_len = min (get_len str - buf_pos) 20 in + let prefix = get_sub str buf_pos prefix_len in + let msg = + sprintf "%s: S-expression followed by data at position %d: %S..." + loc buf_pos prefix + in + failwith msg + | Done (sexp, _) -> sexp + | Cont (ws_only, this_parse) -> + if ws_only then failwith (loc ^ ": whitespace only"); + match this_parse ~pos:0 ~len:1 ws_buf with + | Done (sexp, _) -> sexp + | Cont _ -> failwith (loc ^ ": incomplete S-expression") + +let of_string str = + of_string_bstr "Sexp.of_string" parse " " String.length String.sub str + +let get_bstr_sub_str bstr pos len = + let str = String.create len in + for i = 0 to len - 1 do str.[i] <- bstr.{pos + i} done; + str + +let bstr_ws_buf = Array1.create char c_layout 1 +let () = bstr_ws_buf.{0} <- ' ' + +let of_bstr bstr = + of_string_bstr "Sexp.of_bstr" + parse_bstr bstr_ws_buf Array1.dim get_bstr_sub_str bstr + +(* Loading *) + +let load_sexp ?(buf = String.create 8192) file = + let buf_len = String.length buf in + let ic = open_in file in + let rec loop this_parse = + let len = input ic buf 0 buf_len in + if len = 0 then raise End_of_file + else + match this_parse ~pos:0 ~len buf with + | Done (sexp, _) -> sexp + | Cont (_, this_parse) -> loop this_parse + in + try + let sexp = loop plain_parse in + close_in ic; + sexp + with exc -> close_in_noerr ic; raise exc + +let load_rev_sexps ?buf file = + let ic = open_in file in + try + let sexps = input_rev_sexps ?buf ic in + close_in ic; + sexps + with exc -> close_in_noerr ic; raise exc + +let load_sexps ?buf file = + let rev_sexps = load_rev_sexps ?buf file in + List.rev rev_sexps + + +(* Utilities for automated type conversions *) + +let unit = List [] + +external sexp_of_t : t -> t = "%identity" +external t_of_sexp : t -> t = "%identity" diff --git a/ocamlsexp/sexp.ml b/ocamlsexp/sexp.ml new file mode 100644 index 0000000..2ba6d73 --- /dev/null +++ b/ocamlsexp/sexp.ml @@ -0,0 +1 @@ +include Pre_sexp diff --git a/ocamlsexp/sexp.mli b/ocamlsexp/sexp.mli new file mode 100644 index 0000000..0cc65ee --- /dev/null +++ b/ocamlsexp/sexp.mli @@ -0,0 +1,27 @@ +(* File: sexp.mli + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(** Sexp: Module for handling S-expressions (I/O, etc.) *) + +include Sexp_intf.S diff --git a/ocamlsexp/sexp_intf.ml b/ocamlsexp/sexp_intf.ml new file mode 100644 index 0000000..3907e94 --- /dev/null +++ b/ocamlsexp/sexp_intf.ml @@ -0,0 +1,312 @@ +(* File: sexp_intf.ml + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(** Sexp_intf: interface specification for handling S-expressions (I/O, etc.) *) + +open Format +open Lexing + +module type S = sig + + (** Type of S-expressions *) + type t = Type.t = Atom of string | List of t list + + + (** {6 Defaults} *) + + val default_indent : int ref + (** [default_indent] reference to default indentation level for + human-readable conversions. Initialisation value: 2. *) + + + (** {6 S-expression size} *) + + val size : t -> int * int + (** [size sexp] @return [(n_atoms, n_chars)], where [n_atoms] is + the number of atoms in S-expression [sexp], and [n_chars] is the + number of characters in the atoms of the S-expression. *) + + + (** {6 Scan functions} *) + + val scan_sexp : ?buf : Buffer.t -> lexbuf -> t + (** [scan_sexp ?buf lexbuf] scans an S-expression from lex buffer + [lexbuf] using the optional string buffer [buf] for storing + intermediate strings. *) + + val scan_sexps : ?buf : Buffer.t -> lexbuf -> t list + (** [scan_sexps ?buf lexbuf] reads a list of whitespace separated + S-expressions from lex buffer [lexbuf] using the optional string + buffer [buf] for storing intermediate strings. *) + + val scan_iter_sexps : ?buf : Buffer.t -> f : (t -> unit) -> lexbuf -> unit + (** [scan_iter_sexps ?buf ~f lexbuf] iterates over all whitespace + separated S-expressions scanned from lex buffer [lexbuf] using + function [f], and the optional string buffer [buf] for storing + intermediate strings. *) + + val scan_fold_sexps : + ?buf : Buffer.t -> f : (t -> 'a -> 'a) -> init : 'a -> lexbuf -> 'a + (** [scan_fold_sexps ?buf ~f ~init lexbuf] folds over all whitespace + separated S-expressions scanned from lex buffer [lexbuf] using + function [f], initial state [init], and the optional string buffer + [buf] for storing intermediate strings. *) + + val scan_cnv_sexps : ?buf : Buffer.t -> f : (t -> 'a) -> lexbuf -> 'a list + (** [scan_cnv_sexps ?buf ~f lexbuf] maps all whitespace separated + S-expressions scanned from lex buffer [lexbuf] to some list using + function [f], and the optional string buffer [buf] for storing + intermediate strings. *) + + + (** {6 (Partial) parsing} *) + + (** Position information after complete parse *) + type parse_pos = Pre_sexp.parse_pos = + private + { + mutable text_line : int; (** Line position in parsed text *) + mutable text_char : int; (** Character position in parsed text *) + mutable buf_pos : int; (** Reading position in text buffer *) + } + + (** Type of result from calling {!Sexp.parse}. *) + type 'a parse_result = 'a Pre_sexp.parse_result = + | Done of t * parse_pos (** [Done (sexp, parse_pos)] finished + parsing an S-expression. Current parse + position is [parse_pos]. *) + | Cont of bool * 'a parse_fun (** [Cont (ws_only, parse_fun)] met the + end of input before completely + parsing an S-expression. The user + has to call [parse_fun] to continue + parsing the S-expression in another + buffer. If [ws_only] is true, only + whitespace has been parsed so far (or + comments!). NOTE: the continuation + may only be called once! *) + + and 'a parse_fun = pos : int -> len : int -> 'a -> 'a parse_result + (** Type of parsing functions with given offsets and lengths. *) + + (** Type of state maintained during parsing *) + type parse_state = Pre_sexp.parse_state = + private + { + parse_pos : parse_pos; (** Current parse position *) + mutable pstack : t list list; (** Stack of found S-expression lists *) + pbuf : Buffer.t; (** Current atom buffer *) + } + + (** Type of parse errors *) + type parse_error = Pre_sexp.parse_error = + { + location : string; (** Function in which the parse failed *) + err_msg : string; (** Reason why parsing failed *) + parse_state : parse_state; (** State of parser *) + } + + (** Exception raised during partial parsing *) + exception ParseError of parse_error + + val parse : + ?text_line : int -> ?text_char : int -> ?pos : int -> ?len : int -> string + -> string parse_result + (** [parse ?text_line ?text_char ?pos ?len str] (partially) parses an + S-expression in string buffer [str] starting at position [pos] + and reading at most [len] characters. The text position can be + initialized with [text_line] and [text_char]. To parse a single + atom that is not delimited by whitespace it is necessary to call + this function a second time with the returned continuation, and a + dummy buffer that contains whitespace. + + @param text_line default = 1 + @param text_char default = 1 + @param pos default = 0 + @param len default = [String.length str - pos] + *) + + open Bigarray + + type bstr = (char, int8_unsigned_elt, c_layout) Array1.t + + val parse_bstr : + ?text_line : int -> ?text_char : int -> ?pos : int -> ?len : int -> bstr + -> bstr parse_result + (** [parse_bstr ?text_line ?text_char ?pos ?len str] same as [parse], + but operates on bigstrings. *) + + val input_sexp : + ?text_line : int -> ?text_char : int -> ?buf_pos : int -> in_channel -> t + (** [input_sexp ?text_line ?text_char ?buf_pos ic] parses an S-expression + from input channel [ic] using initial position information + [text_line], [text_char], and [buf_pos]. NOTE: this function is not + as fast on files as {!Sexp.load_sexp}, and is also slightly slower + than the scan-functions. But it is guaranteed that [input_sexp] + is only going to read data parseable as an S-expression. Thus, + subsequent input functions will see the data immediately following it. + + @param text_line default = [1] + @param text_char default = [1] + @param buf_pos default = [0] + *) + + val input_sexps : + ?text_line : int -> ?text_char : int -> ?buf_pos : int -> + ?buf : string -> in_channel -> t list + (** [input_sexps ?text_line ?text_char ?buf_pos ??buf ic] parses + whitespace separated S-expressions from input channel [ic] until + EOF is reached. Faster than the scan-functions. NOTE: [buf_pos] + is the initial global buffer position used for locating errors and + does not refer to [buf]. + + @param text_line default = [1] + @param text_char default = [1] + @param buf_pos default = [0] + *) + + val input_rev_sexps : + ?text_line : int -> ?text_char : int -> ?buf_pos : int -> + ?buf : string -> in_channel -> t list + (** [input_rev_sexps ?buf ic] same as {!Sexp.input_sexps}, but returns a + reversed list of S-expressions, which is slightly more efficient. *) + + + (** {6 Loading} *) + + val load_sexp : ?buf : string -> string -> t + (** [load_sexp ?buf file] reads one S-expression from file [file] using + buffer [buf] for storing intermediate data. Ignores any trailing + data. Faster than the scan-functions. + + @raise ParseError if the S-expression is unparseable. + @raise End_of_file if no S-expression could be read. + *) + + val load_sexps : ?buf : string -> string -> t list + (** [load_sexps file] reads a list of whitespace separated S-expressions + from file [file] using buffer [buf] for storing intermediate data. + Faster than the scan-functions. + + @raise ParseError if there is unparseable data in the file. + @raise End_of_file if the last S-expression is incomplete. + *) + + val load_rev_sexps : ?buf : string -> string -> t list + (** [load_rev_sexps file] same as {!Sexp.load_sexps}, but returns a + reversed list of S-expressions, which is slightly more efficient. *) + + + (** {6 Output of S-expressions to I/O-channels} *) + + val output_hum : out_channel -> t -> unit + (** [output_hum oc sexp] outputs S-expression [sexp] to output channel + [oc] in human readable form. *) + + val output_hum_indent : int -> out_channel -> t -> unit + (** [output_hum_indent indent oc sexp] outputs S-expression [sexp] + to output channel [oc] in human readable form using indentation level + [indent]. + *) + + val output_mach : out_channel -> t -> unit + (** [output_mach oc sexp] outputs S-expression [sexp] to output channel + [oc] in machine readable (i.e. most compact) form. *) + + val output : out_channel -> t -> unit + (** [output oc sexp] same as [output_mach]. *) + + + (** {6 Output of S-expressions to formatters} *) + + val pp_hum : formatter -> t -> unit + (** [pp_hum ppf sexp] outputs S-expression [sexp] to formatter [ppf] + in human readable form. *) + + val pp_hum_indent : int -> formatter -> t -> unit + (** [pp_hum_indent n ppf sexp] outputs S-expression [sexp] to formatter + [ppf] in human readable form and indentation level [n]. *) + + val pp_mach : formatter -> t -> unit + (** [pp_mach ppf sexp] outputs S-expression [sexp] to formatter [ppf] + in machine readable (i.e. most compact) form. *) + + val pp : formatter -> t -> unit + (** [pp ppf sexp] same as [pp_mach]. *) + + + (** {6 String and bigstring conversions} *) + + val of_string : string -> t + (** [of_string str] converts string [str] to an S-expression. *) + + val of_bstr : bstr -> t + (** [of_bstr bstr] converts bigstring [bstr] to an S-expression. *) + + val to_string_hum : ?indent : int -> t -> string + (** [to_string_hum ?indent sexp] converts S-expression [sexp] to a + string in human readable form with indentation level [indent]. + + @param indent default = [!default_indent] + *) + + val to_string_mach : t -> string + (** [to_string_mach sexp] converts S-expression [sexp] to a string in + machine readable (i.e. most compact) form. *) + + val to_string : t -> string + (** [to_string sexp] same as [to_string_mach]. *) + + + (** {6 Buffer conversions} *) + + val to_buffer_hum : buf : Buffer.t -> ?indent : int -> t -> unit + (** [to_buffer_hum ~buf ?indent sexp] outputs the S-expression [sexp] + converted to a string in human readable form to buffer [buf]. + + @param indent default = [!default_indent] + *) + + val to_buffer_mach : buf : Buffer.t -> t -> unit + (** [to_buffer_mach ~buf sexp] outputs the S-expression [sexp] converted + to a string in machine readable (i.e. most compact) form to buffer [buf]. + *) + + val to_buffer : buf : Buffer.t -> t -> unit + (** [to_buffer ~buf sexp] same as {!to_buffer_mach}. *) + + + (** {6 Utilities for automated type conversions} *) + + val unit : t + (** [unit] the unit-value as expressed by an S-expression. *) + + external sexp_of_t : t -> t = "%identity" + (** [sexp_of_t sexp] maps S-expressions which are part of a type with + automated S-expression conversion to themselves. *) + + external t_of_sexp : t -> t = "%identity" + (** [t_of_sexp sexp] maps S-expressions which are part of a type with + automated S-expression conversion to themselves. *) + +end diff --git a/ocamlsexp/type.ml b/ocamlsexp/type.ml new file mode 100644 index 0000000..8e5ddca --- /dev/null +++ b/ocamlsexp/type.ml @@ -0,0 +1,26 @@ +(* File: type.ml + + Copyright (C) 2005- + + Jane Street Holding, LLC + Author: Markus Mottl + email: mmottl\@janestcapital.com + WWW: http://www.janestcapital.com/ocaml + + 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*) + +(** Type of S-expressions *) +type t = Atom of string | List of t list diff --git a/parsing_c/.depend b/parsing_c/.depend deleted file mode 100644 index 7af0138..0000000 --- a/parsing_c/.depend +++ /dev/null @@ -1,132 +0,0 @@ -ast_to_flow.cmi: control_flow_c.cmi ../commons/common.cmi ast_c.cmo -comment_annotater_c.cmi: parser_c.cmi ast_c.cmo -compare_c.cmi: ../commons/common.cmi -control_flow_c.cmi: ../commons/ograph_extended.cmi ast_c.cmo -cpp_ast_c.cmi: parsing_stat.cmo parse_c.cmi ../commons/common.cmi ast_c.cmo -lexer_parser.cmi: ../commons/common.cmi -parse_c.cmi: parsing_stat.cmo parsing_hacks.cmi parser_c.cmi \ - ../commons/common.cmi ast_c.cmo -parser_c.cmi: token_c.cmo ast_c.cmo -parsing_hacks.cmi: parser_c.cmi ../commons/common.cmi -pretty_print_c.cmi: ../commons/ograph_extended.cmi control_flow_c.cmi \ - ast_c.cmo -test_parsing_c.cmi: ../commons/common.cmi -token_helpers.cmi: parser_c.cmi ../commons/common.cmi ast_c.cmo -type_annoter_c.cmi: ../commons/common.cmi ast_c.cmo -type_c.cmi: ast_c.cmo -unparse_c.cmi: parse_c.cmi ../commons/common.cmi -unparse_cocci.cmi: pretty_print_c.cmi ../parsing_cocci/ast_cocci.cmi \ - ast_c.cmo -unparse_hrule.cmi: ../commons/common.cmi ../parsing_cocci/ast_cocci.cmi \ - ast_c.cmo -visitor_c.cmi: control_flow_c.cmi ../commons/common.cmi ast_c.cmo -ast_c.cmo: token_c.cmo ../commons/common.cmi ../parsing_cocci/ast_cocci.cmi -ast_c.cmx: token_c.cmx ../commons/common.cmx ../parsing_cocci/ast_cocci.cmx -ast_to_flow.cmo: visitor_c.cmi ../commons/ograph_extended.cmi \ - ../commons/ocollection/oassocb.cmo ../commons/oassoc.cmi \ - flag_parsing_c.cmo control_flow_c.cmi ../commons/common.cmi ast_c.cmo \ - ast_to_flow.cmi -ast_to_flow.cmx: visitor_c.cmx ../commons/ograph_extended.cmx \ - ../commons/ocollection/oassocb.cmx ../commons/oassoc.cmx \ - flag_parsing_c.cmx control_flow_c.cmx ../commons/common.cmx ast_c.cmx \ - ast_to_flow.cmi -comment_annotater_c.cmo: token_helpers.cmi token_c.cmo parser_c.cmi \ - ../commons/common.cmi ast_c.cmo comment_annotater_c.cmi -comment_annotater_c.cmx: token_helpers.cmx token_c.cmx parser_c.cmx \ - ../commons/common.cmx ast_c.cmx comment_annotater_c.cmi -compare_c.cmo: visitor_c.cmi token_helpers.cmi parser_c.cmi parse_c.cmi \ - lib_parsing_c.cmo flag_parsing_c.cmo ../commons/common.cmi ast_c.cmo \ - compare_c.cmi -compare_c.cmx: visitor_c.cmx token_helpers.cmx parser_c.cmx parse_c.cmx \ - lib_parsing_c.cmx flag_parsing_c.cmx ../commons/common.cmx ast_c.cmx \ - compare_c.cmi -control_flow_c.cmo: ../commons/ograph_extended.cmi flag_parsing_c.cmo \ - ../commons/common.cmi ast_c.cmo control_flow_c.cmi -control_flow_c.cmx: ../commons/ograph_extended.cmx flag_parsing_c.cmx \ - ../commons/common.cmx ast_c.cmx control_flow_c.cmi -cpp_ast_c.cmo: visitor_c.cmi parse_c.cmi flag_parsing_c.cmo \ - ../commons/common.cmi ast_c.cmo cpp_ast_c.cmi -cpp_ast_c.cmx: visitor_c.cmx parse_c.cmx flag_parsing_c.cmx \ - ../commons/common.cmx ast_c.cmx cpp_ast_c.cmi -flag_parsing_c.cmo: ../commons/common.cmi -flag_parsing_c.cmx: ../commons/common.cmx -lexer_c.cmo: parser_c.cmi flag_parsing_c.cmo ../commons/common.cmi ast_c.cmo -lexer_c.cmx: parser_c.cmx flag_parsing_c.cmx ../commons/common.cmx ast_c.cmx -lexer_parser.cmo: flag_parsing_c.cmo ../commons/common.cmi lexer_parser.cmi -lexer_parser.cmx: flag_parsing_c.cmx ../commons/common.cmx lexer_parser.cmi -lib_parsing_c.cmo: visitor_c.cmi ../globals/flag.cmo ../commons/common.cmi \ - ../parsing_cocci/ast_cocci.cmi ast_c.cmo -lib_parsing_c.cmx: visitor_c.cmx ../globals/flag.cmx ../commons/common.cmx \ - ../parsing_cocci/ast_cocci.cmx ast_c.cmx -parse_c.cmo: visitor_c.cmi token_helpers.cmi token_c.cmo semantic_c.cmo \ - parsing_stat.cmo parsing_hacks.cmi parser_c.cmi lexer_parser.cmi \ - lexer_c.cmo flag_parsing_c.cmo ../commons/common.cmi ast_c.cmo \ - parse_c.cmi -parse_c.cmx: visitor_c.cmx token_helpers.cmx token_c.cmx semantic_c.cmx \ - parsing_stat.cmx parsing_hacks.cmx parser_c.cmx lexer_parser.cmx \ - lexer_c.cmx flag_parsing_c.cmx ../commons/common.cmx ast_c.cmx \ - parse_c.cmi -parser_c.cmo: token_c.cmo semantic_c.cmo parsing_stat.cmo lexer_parser.cmi \ - flag_parsing_c.cmo ../commons/common.cmi ast_c.cmo parser_c.cmi -parser_c.cmx: token_c.cmx semantic_c.cmx parsing_stat.cmx lexer_parser.cmx \ - flag_parsing_c.cmx ../commons/common.cmx ast_c.cmx parser_c.cmi -parsing_hacks.cmo: token_helpers.cmi token_c.cmo parsing_stat.cmo \ - parser_c.cmi lexer_parser.cmi flag_parsing_c.cmo ../commons/common.cmi \ - ast_c.cmo parsing_hacks.cmi -parsing_hacks.cmx: token_helpers.cmx token_c.cmx parsing_stat.cmx \ - parser_c.cmx lexer_parser.cmx flag_parsing_c.cmx ../commons/common.cmx \ - ast_c.cmx parsing_hacks.cmi -parsing_stat.cmo: ../commons/common.cmi -parsing_stat.cmx: ../commons/common.cmx -pretty_print_c.cmo: ../commons/ograph_extended.cmi lib_parsing_c.cmo \ - flag_parsing_c.cmo control_flow_c.cmi ../commons/common.cmi ast_c.cmo \ - pretty_print_c.cmi -pretty_print_c.cmx: ../commons/ograph_extended.cmx lib_parsing_c.cmx \ - flag_parsing_c.cmx control_flow_c.cmx ../commons/common.cmx ast_c.cmx \ - pretty_print_c.cmi -semantic_c.cmo: ../commons/common.cmi -semantic_c.cmx: ../commons/common.cmx -test_parsing_c.cmo: visitor_c.cmi unparse_c.cmi type_annoter_c.cmi \ - pretty_print_c.cmi parsing_stat.cmo parse_c.cmi \ - ../commons/ograph_extended.cmi flag_parsing_c.cmo cpp_ast_c.cmi \ - compare_c.cmi ../commons/common.cmi comment_annotater_c.cmi \ - ast_to_flow.cmi ast_c.cmo test_parsing_c.cmi -test_parsing_c.cmx: visitor_c.cmx unparse_c.cmx type_annoter_c.cmx \ - pretty_print_c.cmx parsing_stat.cmx parse_c.cmx \ - ../commons/ograph_extended.cmx flag_parsing_c.cmx cpp_ast_c.cmx \ - compare_c.cmx ../commons/common.cmx comment_annotater_c.cmx \ - ast_to_flow.cmx ast_c.cmx test_parsing_c.cmi -token_c.cmo: ../commons/common.cmi -token_c.cmx: ../commons/common.cmx -token_helpers.cmo: parser_c.cmi ../commons/common.cmi ast_c.cmo \ - token_helpers.cmi -token_helpers.cmx: parser_c.cmx ../commons/common.cmx ast_c.cmx \ - token_helpers.cmi -type_annoter_c.cmo: visitor_c.cmi type_c.cmi parse_c.cmi lib_parsing_c.cmo \ - flag_parsing_c.cmo ../commons/common.cmi ast_c.cmo type_annoter_c.cmi -type_annoter_c.cmx: visitor_c.cmx type_c.cmx parse_c.cmx lib_parsing_c.cmx \ - flag_parsing_c.cmx ../commons/common.cmx ast_c.cmx type_annoter_c.cmi -type_c.cmo: ../commons/common.cmi ast_c.cmo type_c.cmi -type_c.cmx: ../commons/common.cmx ast_c.cmx type_c.cmi -unparse_c.cmo: visitor_c.cmi unparse_cocci.cmi token_helpers.cmi token_c.cmo \ - pretty_print_c.cmi parser_c.cmi flag_parsing_c.cmo ../commons/common.cmi \ - ../parsing_cocci/ast_cocci.cmi ast_c.cmo unparse_c.cmi -unparse_c.cmx: visitor_c.cmx unparse_cocci.cmx token_helpers.cmx token_c.cmx \ - pretty_print_c.cmx parser_c.cmx flag_parsing_c.cmx ../commons/common.cmx \ - ../parsing_cocci/ast_cocci.cmx ast_c.cmx unparse_c.cmi -unparse_cocci.cmo: pretty_print_c.cmi ../commons/common.cmi \ - ../parsing_cocci/ast_cocci.cmi ast_c.cmo unparse_cocci.cmi -unparse_cocci.cmx: pretty_print_c.cmx ../commons/common.cmx \ - ../parsing_cocci/ast_cocci.cmx ast_c.cmx unparse_cocci.cmi -unparse_hrule.cmo: visitor_c.cmi ../parsing_cocci/visitor_ast.cmi \ - unparse_cocci.cmi ../parsing_cocci/type_cocci.cmi pretty_print_c.cmi \ - ../globals/flag.cmo ../commons/common.cmi ../parsing_cocci/ast_cocci.cmi \ - ast_c.cmo unparse_hrule.cmi -unparse_hrule.cmx: visitor_c.cmx ../parsing_cocci/visitor_ast.cmx \ - unparse_cocci.cmx ../parsing_cocci/type_cocci.cmx pretty_print_c.cmx \ - ../globals/flag.cmx ../commons/common.cmx ../parsing_cocci/ast_cocci.cmx \ - ast_c.cmx unparse_hrule.cmi -visitor_c.cmo: control_flow_c.cmi ../commons/common.cmi ast_c.cmo \ - visitor_c.cmi -visitor_c.cmx: control_flow_c.cmx ../commons/common.cmx ast_c.cmx \ - visitor_c.cmi diff --git a/parsing_c/Makefile b/parsing_c/Makefile index 68b0c5a..9850b55 100644 --- a/parsing_c/Makefile +++ b/parsing_c/Makefile @@ -7,7 +7,7 @@ TARGET=parsing_c -# - type_cocci.ml ast_cocci.ml # + unparse_hrule +# - type_cocci.ml ast_cocci.ml # + unparse_hrule SRC= flag_parsing_c.ml parsing_stat.ml \ token_c.ml ast_c.ml control_flow_c.ml type_c.ml \ visitor_c.ml lib_parsing_c.ml \ @@ -25,26 +25,26 @@ SRC= flag_parsing_c.ml parsing_stat.ml \ # ast_cocci.ml and unparse_cocci.ml should be deleted in the futur -# to make parsing_c really independent of coccinelle. +# to make parsing_c really independent of coccinelle. # control_flow_c have also coccinelle dependencies. -# old: parsing_c now depends on cocci_parser because in addition to decorate +# old: parsing_c now depends on cocci_parser because in addition to decorate # the token in Ast_c with some parse info, we now also make some place to # welcome some mcodekind of Ast_cocci. LIBS=../commons/commons.cma ../globals/globals.cma \ ../parsing_cocci/cocci_parser.cma INCLUDES= -I ../commons -I ../commons/ocamlextra -I ../commons/ocollection \ - -I ../globals -I ../parsing_cocci + -I ../globals -I ../parsing_cocci #LIBS=../commons/commons.cma #INCLUDES= -I ../commons -SYSLIBS= str.cma unix.cma +SYSLIBS= str.cma unix.cma ############################################################################## # Generic variables ############################################################################## -#for warning: -w A +#for warning: -w A #for profiling: -p -inline 0 with OCAMLOPT OCAMLCFLAGS ?= -g -dtypes @@ -134,14 +134,16 @@ locindiv: .ml.cmx: $(OCAMLOPT) -c $< -.ml.mldepend: +.ml.mldepend: $(OCAMLC) -i $< clean:: rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot -clean:: rm -f *~ .*~ gmon.out #*# +distclean:: + rm -f .depend + beforedepend:: depend:: beforedepend diff --git a/parsing_c/ast_c.ml b/parsing_c/ast_c.ml index 4f4c187..d8824f6 100644 --- a/parsing_c/ast_c.ml +++ b/parsing_c/ast_c.ml @@ -16,6 +16,19 @@ open Common (*****************************************************************************) (* The AST C related types *) (*****************************************************************************) +(* + * Some stuff are tagged semantic: which means that they are computed + * after parsing. + * + * This means that some elements in this AST are present only if + * some annotation/transformation has been done on the original AST returned + * by the parser. Cf type_annotater, comment_annotater, cpp_ast_c, etc. + *) + + +(* ------------------------------------------------------------------------- *) +(* Token/info *) +(* ------------------------------------------------------------------------- *) (* To allow some transformations over the AST, we keep as much information * as possible in the AST such as the tokens content and their locations. @@ -23,12 +36,11 @@ open Common * For instance one tag may say that the unparser should remove this token. * * Update: Now I use a ref! in those 'info' so take care. - * * That means that modifications of the info of tokens can have * an effect on the info stored in the ast (which is sometimes * convenient, cf unparse_c.ml or comment_annotater_c.ml) * - * + * convention: I often use 'ii' for the name of a list of info. * * Sometimes we want to add someting at the beginning or at the end * of a construct. For 'function' and 'decl' we want to add something @@ -37,29 +49,6 @@ open Common * end of a construct. We use fakeInfo for that purpose. * To identify those cases I have added a fakestart/fakeend comment. * - * convention: I often use 'ii' for the name of a list of info. - * - * update: I now allow ifdefs in the ast but there must be only between - * "sequencable" elements. They can be put in a type only if this type - * is used only in a list, like at toplevel, used in 'toplevel list', - * or inside compound, used in 'statement list'. I must not allow - * ifdef anywhere. For instance I can not make ifdef a statement - * cos some instruction like If accept only one statement and the - * ifdef directive must not take the place of a legitimate instruction. - * We had a similar phenomena in SmPL where we have the notion - * of statement and sequencable statement too. Once you have - * such a type of sequencable thing, then s/xx list/xx_sequencable list/ - * and introduce the ifdef. - * - * update: those ifdefs are either passed, or present in the AST but in - * a flat form. To structure those flat ifdefs you have to run - * a transformation that will put in a tree the statements inside - * ifdefs branches. Cf cpp_ast_c.ml. This is for instance the difference - * between a IfdefStmt (flat) and IfdefStmt2 (tree structured). - * - * Some stuff are tagged semantic: which means that they are computed - * after parsing. - * * cocci: Each token will be decorated in the future by the mcodekind * of cocci. It is the job of the pretty printer to look at this * information and decide to print or not the token (and also the @@ -73,10 +62,6 @@ open Common * because the pending '+' may contain metavariables that refer to some * C code. * - * - * All of this means that some elements in this AST are present only if - * some annotation/transformation has been done on the original AST returned - * by the parser. Cf type_annotater, comment_annotater, cpp_ast_c, etc. *) (* forunparser: *) @@ -103,12 +88,14 @@ type parse_info = type info = { pinfo : parse_info; - (* this tag can be changed, which is how we can express some program + + (* this cocci_tag can be changed, which is how we can express some program * transformations by tagging the tokens involved in this transformation. *) cocci_tag: (Ast_cocci.mcodekind * metavars_binding) ref; (* set in comment_annotater_c.ml *) comments_tag: comments_around ref; + (* todo? token_info : sometimes useful to know what token it was *) } and il = info list @@ -119,6 +106,24 @@ and il = info list and 'a wrap = 'a * il and 'a wrap2 = 'a * il +(* ------------------------------------------------------------------------- *) +(* Name *) +(* ------------------------------------------------------------------------- *) + +(* was called 'ident' before, but 'name' is I think better + * as concatenated strings can be used not only for identifiers and for + * declarators, but also for fields, for labels, etc. + *) +and name = + | RegularName of string wrap + | CppConcatenatedName of (string wrap) wrap2 (* the ## separators *) list + (* normally only used inside list of things, as in parameters or arguments + * in which case, cf cpp-manual, it has a special meaning *) + | CppVariadicName of string wrap (* ## s *) + | CppIdentBuilder of string wrap (* s ( ) *) * + ((string wrap) wrap2 list) (* arguments *) + + (* ------------------------------------------------------------------------- *) (* C Type *) (* ------------------------------------------------------------------------- *) @@ -141,15 +146,13 @@ and 'a wrap2 = 'a * il * have an exprStatement and a new (local) struct defined. Same for * Constructor. * - * Some stuff are tagged semantic: which means that they are computed - * after parsing. -*) + *) and fullType = typeQualifier * typeC -and typeC = typeCbis wrap + and typeC = typeCbis wrap -and typeCbis = + and typeCbis = | BaseType of baseType | Pointer of fullType @@ -162,13 +165,13 @@ and typeCbis = | EnumName of string | StructUnionName of structUnion * string - | TypeName of string * fullType option (* semantic: filled later *) + | TypeName of name * fullType option (* semantic: filled later *) | ParenType of fullType (* forunparser: *) - (* gccext: TypeOfType may seems useless; why declare a + (* gccext: TypeOfType below may seems useless; Why declare a * __typeof__(int) x; ? - * But when used with macro, it allows to fix a problem of C which + * When used with macros, it allows to fix a problem of C which * is that type declaration can be spread around the ident. Indeed it * may be difficult to have a macro such as * '#define macro(type, ident) type ident;' @@ -176,7 +179,8 @@ and typeCbis = * macro(char[256], x), * then it will generate invalid code, but with a * '#define macro(type, ident) __typeof(type) ident;' - * it will work. *) + * it will work. + *) | TypeOfExpr of expression | TypeOfType of fullType @@ -207,7 +211,9 @@ and typeCbis = and field = fieldbis wrap and fieldbis = | DeclarationField of field_declaration - | EmptyField (* gccext: *) + (* gccext: *) + | EmptyField + (* cppext: *) | MacroStructDeclTodo @@ -224,15 +230,15 @@ and typeCbis = * But it seems that gcc allow char i:4. C rule must say that you * can cast into int so enum too, ... *) - and fieldkind = fieldkindbis wrap (* s : *) - and fieldkindbis = - | Simple of string option * fullType - | BitField of string option * fullType * constExpression - (* fullType => BitFieldInt | BitFieldUnsigned *) + and fieldkind = + | Simple of name option * fullType + | BitField of name option * fullType * + info (* : *) * constExpression + (* fullType => BitFieldInt | BitFieldUnsigned *) (* -------------------------------------- *) - and enumType = (string * constExpression option) wrap (* s = *) + and enumType = (name * (info (* = *) * constExpression) option) wrap2 (* , *) list (* => string * int list *) @@ -240,8 +246,12 @@ and typeCbis = (* -------------------------------------- *) (* return * (params * has "...") *) and functionType = fullType * (parameterType wrap2 list * bool wrap) - and parameterType = (bool * string option * fullType) wrap (* reg s *) - (* => (bool (register) * fullType) list * bool *) + and parameterType = + { p_namei: name option; + p_register: bool wrap; + p_type: fullType; + } + (* => (bool (register) * fullType) list * bool *) and typeQualifier = typeQualifierbis wrap @@ -265,12 +275,12 @@ and expression = (expressionbis * exp_info ref (* semantic: *)) wrap (* Ident can be a enumeration constant, a simple variable, a name of a func. * With cppext, Ident can also be the name of a macro. Sparse says - * "an identifier with a meaning is a symbol". - *) - | Ident of string (* todo? more semantic info such as LocalFunc *) + * "an identifier with a meaning is a symbol" *) + | Ident of name (* todo? more semantic info such as LocalFunc *) + | Constant of constant | FunCall of expression * argument wrap2 (* , *) list - (* gccext: x ? /* empty */ : y <=> x ? x : y; *) + (* gccext: x ? /* empty */ : y <=> x ? x : y; hence the 'option' below *) | CondExpr of expression * expression option * expression (* should be considered as statements, bad C langage *) @@ -287,8 +297,8 @@ and expression = (expressionbis * exp_info ref (* semantic: *)) wrap | ArrayAccess of expression * expression (* field ident access *) - | RecordAccess of expression * string - | RecordPtAccess of expression * string + | RecordAccess of expression * name + | RecordPtAccess of expression * name (* redundant normally, could replace it by DeRef RecordAcces *) | SizeOfExpr of expression @@ -318,7 +328,7 @@ and expression = (expressionbis * exp_info ref (* semantic: *)) wrap * OCaml int are 31 bits. So simpler to do string. Same reason to have * string instead of int list for the String case. * - * note: that -2 is not a constant, it is the unary operator '-' + * note: -2 is not a constant, it is the unary operator '-' * applied to constant 2. So the string must represent a positive * integer only. *) @@ -352,7 +362,6 @@ and expression = (expressionbis * exp_info ref (* semantic: *)) wrap and constExpression = expression (* => int *) - (* ------------------------------------------------------------------------- *) (* C statement *) (* ------------------------------------------------------------------------- *) @@ -360,10 +369,12 @@ and expression = (expressionbis * exp_info ref (* semantic: *)) wrap * wonderful C langage. * * note: I use 'and' for type definition cos gccext allow statement as - * expression, so need mutual recursive type definition. *) + * expression, so need mutual recursive type definition. + * + *) and statement = statementbis wrap -and statementbis = + and statementbis = | Labeled of labeled | Compound of compound (* new scope *) | ExprStatement of exprStatement @@ -383,7 +394,7 @@ and statementbis = - and labeled = Label of string * statement + and labeled = Label of name * statement | Case of expression * statement | CaseRange of expression * expression * statement (* gccext: *) | Default of statement @@ -394,12 +405,31 @@ and statementbis = * Simplify cocci to just have statement list, by integrating Decl in stmt. * * update: now introduce also the _sequencable to allow ifdef in the middle. + * Indeed, I now allow ifdefs in the ast but they must be only between + * "sequencable" elements. They can be put in a type only if this type + * is used in a list, like at the toplevel, used in a 'toplevel list', + * or inside a compound, used in a 'statement list'. I must not allow + * ifdef anywhere. For instance I can not make ifdef a statement + * cos some instruction like If accept only one statement and the + * ifdef directive must not take the place of a legitimate instruction. + * We had a similar phenomena in SmPL where we have the notion + * of statement and sequencable statement too. Once you have + * such a type of sequencable thing, then s/xx list/xx_sequencable list/ + * and introduce the ifdef. + * + * update: those ifdefs are either passed, or present in the AST but in + * a flat form. To structure those flat ifdefs you have to run + * a transformation that will put in a tree the statements inside + * ifdefs branches. Cf cpp_ast_c.ml. This is for instance the difference + * between a IfdefStmt (flat) and IfdefStmt2 (tree structured). + * *) and compound = statement_sequencable list (* cppext: easier to put at statement_list level than statement level *) and statement_sequencable = | StmtElem of statement + (* cppext: *) | CppDirectiveStmt of cpp_directive | IfdefStmt of ifdef_directive @@ -425,7 +455,7 @@ and statementbis = (* cppext: *) | MacroIteration of string * argument wrap2 list * statement - and jump = Goto of string + and jump = Goto of name | Continue | Break | Return | ReturnExpr of expression | GotoComputed of expression (* gccext: goto *exp ';' *) @@ -444,7 +474,7 @@ and statementbis = (* (string * ...) option cos can have empty declaration or struct tag * declaration. * - * Before I had Typedef constructor, but why make this special case and not + * Before I had a Typedef constructor, but why make this special case and not * have StructDef, EnumDef, ... so that 'struct t {...} v' will generate 2 * declarations ? So I try to generalise and not have Typedef either. This * requires more work in parsing. Better to separate concern. @@ -455,15 +485,13 @@ and statementbis = * accepts it. *) -and local_decl = LocalDecl | NotLocalDecl - and declaration = | DeclList of onedecl wrap2 (* , *) list wrap (* ; fakestart sto *) (* cppext: *) | MacroDecl of (string * argument wrap2 list) wrap and onedecl = - { v_namei: (string * initialiser option) wrap (* s = *) option; + { v_namei: (name * (info (* = *) * initialiser) option) option; v_type: fullType; v_storage: storage; v_local: local_decl; (* cocci: *) @@ -473,6 +501,8 @@ and declaration = and storagebis = NoSto | StoTypedef | Sto of storageClass and storageClass = Auto | Static | Register | Extern + and local_decl = LocalDecl | NotLocalDecl + and initialiser = initialiserbis wrap and initialiserbis = | InitExpr of expression @@ -495,15 +525,17 @@ and declaration = (* Normally we should define another type functionType2 because there * are more restrictions on what can define a function than a pointer * function. For instance a function declaration can omit the name of the - * parameter wheras a function definition can not. But, in some cases such + * parameter whereas a function definition can not. But, in some cases such * as 'f(void) {', there is no name too, so I simplified and reused the * same functionType type for both declaration and function definition. - * Also old style C does not have type in the parameter. + * + * Also old style C does not have type in the parameter, so again simpler + * to abuse the functionType and allow missing type. *) -and definition = definitionbis wrap (* s ( ) { } fakestart sto *) +and definition = definitionbis wrap (* ( ) { } fakestart sto *) and definitionbis = - { f_name: string; - f_type: functionType; + { f_name: name; + f_type: functionType; (* todo? a functionType2 ? *) f_storage: storage; f_body: compound; f_attr: attribute list; (* gccext: *) @@ -515,34 +547,19 @@ and definition = definitionbis wrap (* s ( ) { } fakestart sto *) (* cppext: cpp directives, #ifdef, #define and #include body *) (* ------------------------------------------------------------------------- *) and cpp_directive = - | Include of includ | Define of define + | Include of includ | Undef of string wrap | PragmaAndCo of il +(*| Ifdef ? no, ifdefs are handled differently, cf ifdef_directive below *) -(* to specialize if someone need more info *) -and ifdef_directive = (* or and 'a ifdefed = 'a list wrap *) - | IfdefDirective of (ifdefkind * matching_tag) wrap - and ifdefkind = - | Ifdef (* todo? of string ? of formula_cpp *) - | IfdefElseif (* same *) - | IfdefElse (* same *) - | IfdefEndif - (* set in Parsing_hacks.set_ifdef_parenthize_info. It internally use - * a global so it means if you parse same file twice you may get - * different id. I try now to avoid this pb by resetting it each - * time I parse a file. - *) - and matching_tag = - IfdefTag of (int (* tag *) * int (* total with this tag *)) - -and define = string wrap * define_body (* #define s *) - and define_body = define_kind * define_val +and define = string wrap (* #define s *) * (define_kind * define_val) and define_kind = | DefineVar | DefineFunc of ((string wrap) wrap2 list) wrap (* () *) and define_val = - | DefineExpr of expression (* most common case, to define int constant *) + (* most common case; e.g. to define int constant *) + | DefineExpr of expression | DefineStmt of statement | DefineType of fullType @@ -550,6 +567,7 @@ and define = string wrap * define_body (* #define s *) | DefineFunction of definition | DefineInit of initialiser (* in practice only { } with possible ',' *) + (* TODO DefineMulti of define_val list *) | DefineText of string wrap @@ -590,6 +608,23 @@ and includ = +(* todo? to specialize if someone need more info *) +and ifdef_directive = (* or and 'a ifdefed = 'a list wrap *) + | IfdefDirective of (ifdefkind * matching_tag) wrap + and ifdefkind = + | Ifdef (* todo? of string ? of formula_cpp ? *) + | IfdefElseif (* same *) + | IfdefElse (* same *) + | IfdefEndif + (* set in Parsing_hacks.set_ifdef_parenthize_info. It internally use + * a global so it means if you parse the same file twice you may get + * different id. I try now to avoid this pb by resetting it each + * time I parse a file. + *) + and matching_tag = + IfdefTag of (int (* tag *) * int (* total with this tag *)) + + @@ -701,6 +736,7 @@ let noType () = ref (None,NotTest) let noInstr = (ExprStatement (None), []) let noTypedefDef () = None + let emptyMetavarsBinding = ([]: metavars_binding) @@ -854,9 +890,9 @@ let compare_pos ii1 ii2 = (Real p1, Real p2) -> compare p1.Common.charpos p2.Common.charpos | (Virt (p1,_), Real p2) -> - if (compare p1.Common.charpos p2.Common.charpos) = (-1) then (-1) else 1 + if (compare p1.Common.charpos p2.Common.charpos) =|= (-1) then (-1) else 1 | (Real p1, Virt (p2,_)) -> - if (compare p1.Common.charpos p2.Common.charpos) = 1 then 1 else (-1) + if (compare p1.Common.charpos p2.Common.charpos) =|= 1 then 1 else (-1) | (Virt (p1,o1), Virt (p2,o2)) -> let poi1 = p1.Common.charpos in let poi2 = p2.Common.charpos in @@ -881,7 +917,7 @@ let info_to_fixpos ii = let is_test (e : expression) = let (_,info) = unwrap e in let (_,test) = !info in - test = Test + test =*= Test (*****************************************************************************) (* Abstract line *) @@ -929,6 +965,46 @@ let real_al_info x = comments_tag = ref emptyComments; } +let al_comments x = + let keep_cpp l = + List.filter (function (Token_c.TCommentCpp _,_) -> true | _ -> false) l in + let al_com (x,i) = + (x,{i with Common.charpos = magic_real_number; + Common.line = magic_real_number; + Common.column = magic_real_number}) in + {mbefore = []; (* duplicates mafter of the previous token *) + mafter = List.map al_com (keep_cpp x.mafter)} + +let al_info_cpp tokenindex x = + { pinfo = + (AbstractLineTok + {charpos = tokenindex; + line = tokenindex; + column = tokenindex; + file = ""; + str = str_of_info x}); + cocci_tag = ref emptyAnnot; + comments_tag = ref (al_comments !(x.comments_tag)); + } + +let semi_al_info_cpp x = + { x with + cocci_tag = ref emptyAnnot; + comments_tag = ref (al_comments !(x.comments_tag)); + } + +let real_al_info_cpp x = + { pinfo = + (AbstractLineTok + {charpos = magic_real_number; + line = magic_real_number; + column = magic_real_number; + file = ""; + str = str_of_info x}); + cocci_tag = ref emptyAnnot; + comments_tag = ref (al_comments !(x.comments_tag)); + } + (*****************************************************************************) (* Views *) @@ -964,15 +1040,6 @@ let rec (unsplit_comma: ('a, il) either list -> 'a wrap2 list) = -let split_register_param = fun (hasreg, idb, ii_b_s) -> - match hasreg, idb, ii_b_s with - | false, Some s, [i1] -> Left (s, [], i1) - | true, Some s, [i1;i2] -> Left (s, [i1], i2) - | _, None, ii -> Right ii - | _ -> raise Impossible - - - (*****************************************************************************) (* Helpers, could also be put in lib_parsing_c.ml instead *) (*****************************************************************************) @@ -1012,20 +1079,48 @@ let s_of_inc_file_bis inc_file = | Weird s -> s let fieldname_of_fieldkind fieldkind = - match unwrap fieldkind with + match fieldkind with | Simple (sopt, ft) -> sopt - | BitField (sopt, ft, expr) -> sopt + | BitField (sopt, ft, info, expr) -> sopt let s_of_attr attr = attr +> List.map (fun (Attribute s, ii) -> s) +> Common.join "," - -let type_of_parameter param = - let ((b, sopt, typ), ii) = param in - typ +let str_of_name ident = + match ident with + | RegularName (s,ii) -> s + | CppConcatenatedName xs -> + xs +> List.map (fun (x,iiop) -> unwrap x) +> Common.join "##" + | CppVariadicName (s, ii) -> "##" ^ s + | CppIdentBuilder ((s,iis), xs) -> + s ^ "(" ^ + (xs +> List.map (fun ((x,iix), iicomma) -> x) +> Common.join ",") ^ + ")" + +let info_of_name ident = + match ident with + | RegularName (s,ii) -> List.hd ii + | CppConcatenatedName xs -> + (match xs with + | [] -> raise Impossible + | ((x,ii1),ii2)::xs -> + List.hd ii1 + ) + | CppVariadicName (s, ii) -> + let (iihash, iis) = Common.tuple_of_list2 ii in + iihash + | CppIdentBuilder ((s,iis),xs) -> + List.hd iis + +let get_s_and_ii_of_name name = + match name with + | RegularName (s, iis) -> s, List.hd iis + | _ -> raise Todo + + let name_of_parameter param = - let ((b, sopt, typ), ii) = param in - sopt + param.p_namei +> Common.map_option (str_of_name) + diff --git a/parsing_c/ast_to_flow.ml b/parsing_c/ast_to_flow.ml index 7ec3cf2..6bd0826 100644 --- a/parsing_c/ast_to_flow.ml +++ b/parsing_c/ast_to_flow.ml @@ -174,10 +174,12 @@ let compute_labels_and_create_them st = st +> Visitor_c.vk_statement { Visitor_c.default_visitor_c with Visitor_c.kstatement = (fun (k, bigf) st -> match st with - | Labeled (Ast_c.Label (s, _st)),ii -> + | Labeled (Ast_c.Label (name, _st)),ii -> (* at this point I put a lbl_0, but later I will put the * good labels. *) - let newi = !g +> add_node (Label (st,(s,ii))) lbl_0 (s^":") in + let s = Ast_c.str_of_name name in + let newi = !g +> add_node (Label (st,name, ((),ii))) lbl_0 (s^":") + in begin (* the C label already exists ? *) if (!h#haskey s) then raise (Error (DuplicatedLabel s)); @@ -342,7 +344,8 @@ let rec (aux_statement: (nodei option * xinfo) -> statement -> nodei option) = (* ------------------------- *) - | Labeled (Ast_c.Label (s, st)), ii -> + | Labeled (Ast_c.Label (name, st)), ii -> + let s = Ast_c.str_of_name name in let ilabel = xi.labels_assoc#find s in let node = mk_node (unwrap (!g#nodes#find ilabel)) lbl [] (s ^ ":") in !g#replace_node (ilabel, node); @@ -350,9 +353,11 @@ let rec (aux_statement: (nodei option * xinfo) -> statement -> nodei option) = aux_statement (Some ilabel, xi_lbl) st - | Jump (Ast_c.Goto s), ii -> + | Jump (Ast_c.Goto name), ii -> + let s = Ast_c.str_of_name name in (* special_cfg_ast: *) - let newi = !g +> add_node (Goto (stmt, (s,ii))) lbl ("goto " ^ s ^ ":") in + let newi = !g +> add_node (Goto (stmt, name, ((),ii))) lbl ("goto "^s^":") + in !g +> add_arc_opt (starti, newi); let ilabel = @@ -385,16 +390,17 @@ let rec (aux_statement: (nodei option * xinfo) -> statement -> nodei option) = | Some e -> let ((unwrap_e, typ), ii) = e in (match unwrap_e with - | FunCall (((Ident f, _typ), _ii), _args) -> - f ^ "(...)" - | Assignment (((Ident var, _typ), _ii), SimpleAssign, e) -> - var ^ " = ... ;" + | FunCall (((Ident (namef), _typ), _ii), _args) -> + Ast_c.str_of_name namef ^ "(...)" + | Assignment (((Ident (namevar), _typ), _ii), SimpleAssign, e) -> + Ast_c.str_of_name namevar ^ " = ... ;" | Assignment - (((RecordAccess (((Ident var, _typ), _ii), field), _typ2), + (((RecordAccess (((Ident (namevar), _typ), _ii), field), _typ2), _ii2), SimpleAssign, e) -> - var ^ "." ^ field ^ " = ... ;" + let sfield = Ast_c.str_of_name field in + Ast_c.str_of_name namevar ^ "." ^ sfield ^ " = ... ;" | _ -> "statement" ) @@ -812,7 +818,7 @@ let rec (aux_statement: (nodei option * xinfo) -> statement -> nodei option) = let context_info = match xi.ctx with SwitchInfo (startbrace, loopendi, braces, parent_lbl) -> - if x = Ast_c.Break + if x =*= Ast_c.Break then xi.ctx else (try @@ -867,7 +873,7 @@ let rec (aux_statement: (nodei option * xinfo) -> statement -> nodei option) = None | SwitchInfo (startbrace, loopendi, braces, parent_lbl) -> - assert (x = Ast_c.Break); + assert (x =*= Ast_c.Break); let difference = List.length xi.braces - List.length braces in assert (difference >= 0); let toend = take difference xi.braces in @@ -915,8 +921,8 @@ let rec (aux_statement: (nodei option * xinfo) -> statement -> nodei option) = let s = match decl with | (Ast_c.DeclList - ([{v_namei = Some ((s, _),_); v_type = typ; v_storage = sto}, _], _)) -> - "decl:" ^ s + ([{v_namei = Some (name, _); v_type = typ; v_storage = sto}, _], _)) -> + "decl:" ^ Ast_c.str_of_name name | _ -> "decl_novar_or_multivar" in @@ -1006,7 +1012,7 @@ let (aux_definition: nodei -> definition -> unit) = fun topi funcdef -> let lbl_start = [!counter_for_labels] in - let ({f_name = funcs; + let ({f_name = namefuncs; f_type = functype; f_storage= sto; f_body= compound; @@ -1015,8 +1021,8 @@ let (aux_definition: nodei -> definition -> unit) = fun topi funcdef -> }, ii) = funcdef in let iifunheader, iicompound = (match ii with - | is::ioparen::icparen::iobrace::icbrace::iifake::isto -> - is::ioparen::icparen::iifake::isto, + | ioparen::icparen::iobrace::icbrace::iifake::isto -> + ioparen::icparen::iifake::isto, [iobrace;icbrace] | _ -> raise Impossible ) @@ -1026,14 +1032,14 @@ let (aux_definition: nodei -> definition -> unit) = fun topi funcdef -> let headi = !g +> add_node (FunHeader ({ - Ast_c.f_name = funcs; + Ast_c.f_name = namefuncs; f_type = functype; f_storage = sto; f_attr = attrs; f_body = [] (* empty body *); f_old_c_style = oldstyle; }, iifunheader)) - lbl_start ("function " ^ funcs) in + lbl_start ("function " ^ Ast_c.str_of_name namefuncs) in let enteri = !g +> add_node Enter lbl_0 "[enter]" in let exiti = !g +> add_node Exit lbl_0 "[exit]" in let errorexiti = !g +> add_node ErrorExit lbl_0 "[errorexit]" in @@ -1069,8 +1075,9 @@ let (aux_definition: nodei -> definition -> unit) = fun topi funcdef -> *) let specialdeclmacro_to_stmt (s, args, ii) = let (iis, iiopar, iicpar, iiptvirg) = tuple_of_list4 ii in - let ident = (Ast_c.Ident s, Ast_c.noType()), [iis] in - let f = (Ast_c.FunCall (ident, args), Ast_c.noType()), [iiopar;iicpar] in + let ident = Ast_c.RegularName (s, [iis]) in + let identfinal = (Ast_c.Ident (ident), Ast_c.noType()), [] in + let f = (Ast_c.FunCall (identfinal, args), Ast_c.noType()), [iiopar;iicpar] in let stmt = Ast_c.ExprStatement (Some f), [iiptvirg] in stmt, (f, [iiptvirg]) @@ -1304,7 +1311,7 @@ let (check_control_flow: cflow -> unit) = fun g -> (match unwrap (nodes#find nodei), startbraces with | SeqStart (_,i,_), xs -> i::xs | SeqEnd (i,_), j::xs -> - if i = j + if i =|= j then xs else begin @@ -1321,7 +1328,7 @@ let (check_control_flow: cflow -> unit) = fun g -> in - if children#tolist = [] + if null children#tolist then if (* (depth = 0) *) startbraces <> [] then print_trace_error trace2 diff --git a/parsing_c/comment_annotater_c.ml b/parsing_c/comment_annotater_c.ml index d4fb2a3..2885b56 100644 --- a/parsing_c/comment_annotater_c.ml +++ b/parsing_c/comment_annotater_c.ml @@ -113,12 +113,12 @@ let annotate_program toks asts = in (* merge *) - assert(List.length toks_with_after = List.length toks_with_before); + assert(List.length toks_with_after =|= List.length toks_with_before); Common.zip toks_with_before toks_with_after +> List.iter (fun ((t1, before), (t2, after)) -> - assert(t1 = t2); + assert(t1 =*= t2); let before' = before +> List.map convert_relevant_tokens in let after' = after +> List.map convert_relevant_tokens in diff --git a/parsing_c/compare_c.ml b/parsing_c/compare_c.ml index 0a5196f..bb5894a 100644 --- a/parsing_c/compare_c.ml +++ b/parsing_c/compare_c.ml @@ -211,7 +211,7 @@ let compare_ast filename1 filename2 = ); (match () with - | _ when !pb_notparsed > 0 && !error = 0 -> + | _ when !pb_notparsed > 0 && !error =|= 0 -> PbOnlyInNotParsedCorrectly "" | _ when !error > 0 -> Pb "" | _ -> Correct @@ -281,7 +281,7 @@ let compare_token filename1 filename2 = | x::xs, y::ys -> let x' = normal_form_token x in let y' = normal_form_token y in - if x' = y' + if x' =*= y' then loop xs ys else let str1, pos1 = @@ -378,4 +378,4 @@ let compare_result_to_string (correct, diffxs) = let compare_result_to_bool correct = - correct = Correct + correct =*= Correct diff --git a/parsing_c/control_flow_c.ml b/parsing_c/control_flow_c.ml index 77843ae..fafae71 100644 --- a/parsing_c/control_flow_c.ml +++ b/parsing_c/control_flow_c.ml @@ -82,6 +82,7 @@ open Ast_c (*****************************************************************************) +type fullstatement = statement (* ---------------------------------------------------------------------- *) (* The string is for debugging. Used by Ograph_extended.print_graph. @@ -227,9 +228,9 @@ type node = node1 * string | Break of statement * unit wrap (* no counter part in cocci *) - | CaseRange of statement * (expression * expression) wrap - | Label of statement * string wrap - | Goto of statement * string wrap + | CaseRange of fullstatement * (expression * expression) wrap + | Label of fullstatement * name * unit wrap (* : *) + | Goto of fullstatement * name * unit wrap (* goto *) | Asm of statement * asmbody wrap @@ -356,11 +357,11 @@ let extract_fullstatement node = | Return (st, _) | ReturnExpr (st, _) (* no counter part in cocci *) - | Label (st, _) + | Label (st, _, _) | Case (st,_) | CaseRange (st, _) | Default (st, _) - | Goto (st, _) + | Goto (st, _, _) | Continue (st, _) | Break (st, _) | Asm (st,_) diff --git a/parsing_c/control_flow_c.mli b/parsing_c/control_flow_c.mli index 3938bb4..aaa324d 100644 --- a/parsing_c/control_flow_c.mli +++ b/parsing_c/control_flow_c.mli @@ -64,8 +64,8 @@ type node = node1 * string (* For debugging. Used by print_graph *) (* no counter part in cocci *) | CaseRange of statement * (expression * expression) wrap - | Label of statement * string wrap - | Goto of statement * string wrap + | Label of statement * name * unit wrap + | Goto of statement * name * unit wrap | Asm of statement * asmbody wrap diff --git a/parsing_c/cpp_ast_c.ml b/parsing_c/cpp_ast_c.ml index ec8d3c7..af246f2 100644 --- a/parsing_c/cpp_ast_c.ml +++ b/parsing_c/cpp_ast_c.ml @@ -301,7 +301,7 @@ let unparse_showing_include_content ? let is_ifdef_and_same_tag tag x = match x with | IfdefStmt (IfdefDirective ((_, tag2),_)) -> - tag = tag2 + tag =*= tag2 | StmtElem _ | CppDirectiveStmt _ -> false | IfdefStmt2 _ -> raise Impossible @@ -350,17 +350,16 @@ let group_ifdef tag xs = let rec cpp_ifdef_statementize ast = Visitor_c.vk_program_s { Visitor_c.default_visitor_c_s with Visitor_c.kstatementseq_list_s = (fun (k, bigf) xs -> - let rec aux xs = match xs with | [] -> [] - | stseq::xs -> + | stseq::xs -> (match stseq with | StmtElem st -> Visitor_c.vk_statement_sequencable_s bigf stseq::aux xs | CppDirectiveStmt directive -> Visitor_c.vk_statement_sequencable_s bigf stseq::aux xs - | IfdefStmt ifdef -> + | IfdefStmt ifdef -> (match ifdef with | IfdefDirective ((Ifdef,tag),ii) -> @@ -369,10 +368,10 @@ let rec cpp_ifdef_statementize ast = then let res = IfdefStmt2 (ifdef::restifdefs, xxs) in Visitor_c.vk_statement_sequencable_s bigf res::aux xs' - else + else Visitor_c.vk_statement_sequencable_s bigf stseq::aux xs - | IfdefDirective (((IfdefElseif|IfdefElse|IfdefEndif),b),ii) -> + | IfdefDirective (((IfdefElseif|IfdefElse|IfdefEndif),b),ii) -> pr2 "weird: first directive is not a ifdef"; (* maybe not weird, just that should_ifdefize * returned false *) diff --git a/parsing_c/lexer_c.mll b/parsing_c/lexer_c.mll index 7c4e312..6a18e2e 100644 --- a/parsing_c/lexer_c.mll +++ b/parsing_c/lexer_c.mll @@ -31,6 +31,8 @@ open Ast_c (* to factorise tokens, OpAssign, ... *) * TComment (tokinfo lexbuf +> tok_add_s (comment lexbuf)) * * because of the "wierd" order of evaluation of OCaml. + * + * * * note: can't use Lexer_parser._lexer_hint here to do different * things, because now we call the lexer to get all the tokens @@ -69,7 +71,7 @@ let tokinfo lexbuf = comments_tag = ref Ast_c.emptyComments; } -(* must generate a new ref each time, otherwise share *) +(* cppext: must generate a new ref each time, otherwise share *) let no_ifdef_mark () = ref (None: (int * int) option) let tok_add_s s ii = Ast_c.rewrap_str ((Ast_c.str_of_info ii) ^ s) ii @@ -218,6 +220,8 @@ rule token = parse let info' = info +> tok_add_s com in let s = Ast_c.str_of_info info' in + (* could be more flexible, use [\t ]* instead of hardcoded + * single space. *) match s with | "/* {{coccinelle:skip_start}} */" -> TCommentSkipTagStart (info') @@ -243,7 +247,7 @@ rule token = parse * | _ { endline lexbuf} *) - (* todo?: + (* less?: * have found a # #else in "newfile-2.6.c", legal ? and also a #/* ... * => just "#" -> token {lexbuf} (that is ignore) * il y'a 1 #elif sans rien apres @@ -268,7 +272,7 @@ rule token = parse * http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html *) - | "#" spopt "pragma" sp [^'\n']* '\n' + | "#" spopt "pragma" sp [^'\n']* '\n' | "#" spopt "ident" sp [^'\n']* '\n' | "#" spopt "line" sp [^'\n']* '\n' | "#" spopt "error" sp [^'\n']* '\n' @@ -457,29 +461,35 @@ rule token = parse (* only in cpp directives normally *) | "\\" '\n' { TCppEscapedNewline (tokinfo lexbuf) } - - | ((id as s) "...") - { TDefParamVariadic (s, tokinfo lexbuf) } - - - (* could generate separate token for #, ## and then extend grammar, - * but there can be ident in many different places, in expression - * but also in declaration, in function name. So having 3 tokens + (* We must generate separate tokens for #, ## and extend the grammar. + * Note there can be "elaborated" idents in many different places, in + * expression but also in declaration, in function name. So having 3 tokens * for an ident does not work well with how we add info in - * ast_c. So better to generate just one token, for now, just one info, - * even if have later to reanalyse those tokens and unsplit. + * ast_c. Was easier to generate just one token, just one info, + * even if have later to reanalyse those tokens and unsplit. But then, + * handling C++ lead to having not just a string for ident but something + * more complex. Also when we want to parse elaborated function headers + * (e.g. void METH(foo)(int x)), we need anyway to go from a string + * to something more. So having also for C something more than just + * string for ident is natural. * * todo: our heuristics in parsing_hacks rely on TIdent. So maybe * an easier solution would be to augment the TIdent type such as * TIdent of string * info * cpp_ident_additionnal_info + * + * old: + * | id ([' ''\t']* "##" [' ''\t']* id)+ + * { let info = tokinfo lexbuf in + * TIdent (tok lexbuf, info) + * } + * | "##" spopt id + * { let info = tokinfo lexbuf in + * TIdent (tok lexbuf, info) + * } + * *) - - - (* cppext: string concatenation of idents *) - | id ([' ''\t']* "##" [' ''\t']* id)+ - { let info = tokinfo lexbuf in - TIdent (tok lexbuf, info) - } + (* cppext: string concatenation of idents, also ##args for variadic macro. *) + | "##" { TCppConcatOp (tokinfo lexbuf) } (* cppext: stringification. * bugfix: this case must be after the other cases such as #endif @@ -489,12 +499,11 @@ rule token = parse { let info = tokinfo lexbuf in TIdent (tok lexbuf, info) } + (* the ... next to id, e.g. arg..., works with ##, e.g. ##arg *) + | ((id as s) "...") + { TDefParamVariadic (s, tokinfo lexbuf) } + - (* cppext: gccext: ##args for variadic macro *) - | "##" spopt id - { let info = tokinfo lexbuf in - TIdent (tok lexbuf, info) - } diff --git a/parsing_c/lib_parsing_c.ml b/parsing_c/lib_parsing_c.ml index 1d328a8..3b4357b 100644 --- a/parsing_c/lib_parsing_c.ml +++ b/parsing_c/lib_parsing_c.ml @@ -29,7 +29,7 @@ let strip_info_visitor _ = (* traversal should be deterministic... *) (let ctr = ref 0 in (function (k,_) -> - function i -> ctr := !ctr + 1; Ast_c.al_info !ctr i)); + function i -> ctr := !ctr + 1; Ast_c.al_info_cpp !ctr i)); Visitor_c.kexpr_s = (fun (k,_) e -> let (e', ty),ii' = k e in @@ -70,7 +70,7 @@ let al_ii x = Visitor_c.vk_ii_s (strip_info_visitor()) x let semi_strip_info_visitor = (* keep position information *) { Visitor_c.default_visitor_c_s with - Visitor_c.kinfo_s = (fun (k,_) i -> Ast_c.semi_al_info i); + Visitor_c.kinfo_s = (fun (k,_) i -> Ast_c.semi_al_info_cpp i); Visitor_c.kexpr_s = (fun (k,_) e -> let (e', ty),ii' = k e in @@ -87,7 +87,8 @@ let semi_al_param = Visitor_c.vk_param_s semi_strip_info_visitor let semi_al_params = Visitor_c.vk_params_s semi_strip_info_visitor let semi_al_arguments = Visitor_c.vk_arguments_s semi_strip_info_visitor -let semi_al_program = List.map (Visitor_c.vk_toplevel_s semi_strip_info_visitor) +let semi_al_program = + List.map (Visitor_c.vk_toplevel_s semi_strip_info_visitor) @@ -97,7 +98,7 @@ let semi_al_program = List.map (Visitor_c.vk_toplevel_s semi_strip_info_visitor) let real_strip_info_visitor _ = { Visitor_c.default_visitor_c_s with Visitor_c.kinfo_s = (fun (k,_) i -> - Ast_c.real_al_info i + Ast_c.real_al_info_cpp i ); Visitor_c.kexpr_s = (fun (k,_) e -> @@ -164,7 +165,7 @@ let max_min_ii_by_pos xs = | [] -> failwith "empty list, max_min_ii_by_pos" | [x] -> (x, x) | x::xs -> - let pos_leq p1 p2 = (Ast_c.compare_pos p1 p2) = (-1) in + let pos_leq p1 p2 = (Ast_c.compare_pos p1 p2) =|= (-1) in xs +> List.fold_left (fun (maxii,minii) e -> let maxii' = if pos_leq maxii e then e else maxii in let minii' = if pos_leq e minii then e else minii in diff --git a/parsing_c/parse_c.ml b/parsing_c/parse_c.ml index e27a9db..6e0b505 100644 --- a/parsing_c/parse_c.ml +++ b/parsing_c/parse_c.ml @@ -55,7 +55,7 @@ let print_bad line_error (start_line, end_line) filelines = for i = start_line to end_line do let line = filelines.(i) in - if i = line_error + if i =|= line_error then pr2 ("BAD:!!!!!" ^ " " ^ line) else pr2 ("bad:" ^ " " ^ line) done @@ -87,7 +87,7 @@ let mk_info_item a b = let info_same_line line xs = - xs +> List.filter (fun info -> Ast_c.line_of_info info = line) + xs +> List.filter (fun info -> Ast_c.line_of_info info =|= line) (*****************************************************************************) @@ -182,10 +182,10 @@ let print_commentized xs = let s = Str.global_substitute (Str.regexp "\n") (fun s -> "") s in - if newline = !line + if newline =|= !line then prerr_string (s ^ " ") else begin - if !line = -1 + if !line =|= -1 then pr2_no_nl "passed:" else pr2_no_nl "\npassed:"; line := newline; @@ -397,6 +397,10 @@ type class_token = | CReservedKwd (type | decl | qualif | flow | misc | attr) *) +let ident_to_typename ident = + (Ast_c.nQ, (Ast_c.TypeName (ident, Ast_c.noTypedefDef()), Ast_c.noii)) + + (* parse_typedef_fix4 *) let consistency_checking2 xs = @@ -411,7 +415,8 @@ let consistency_checking2 xs = Visitor_c.kexpr = (fun (k,bigf) x -> match Ast_c.unwrap_expr x with - | Ast_c.Ident s -> + | Ast_c.Ident (id) -> + let s = Ast_c.str_of_name id in stat +> Common.hfind_default s v1 +> Common.hfind_default CIdent v2 +> (fun aref -> incr aref) @@ -420,7 +425,8 @@ let consistency_checking2 xs = ); Visitor_c.ktype = (fun (k,bigf) t -> match Ast_c.unwrap_typeC t with - | Ast_c.TypeName (s,_typ) -> + | Ast_c.TypeName (name,_typ) -> + let s = Ast_c.str_of_name name in stat +> Common.hfind_default s v1 +> Common.hfind_default CTypedef v2 +> (fun aref -> incr aref) @@ -442,7 +448,7 @@ let consistency_checking2 xs = then begin pr2 ("CONFLICT:" ^ k); let sorted = xs +> List.sort (fun (ka,va) (kb,vb) -> - if !va = !vb then + if !va =|= !vb then (match ka, kb with | CTypedef, _ -> 1 (* first is smaller *) | _, CTypedef -> -1 @@ -474,11 +480,13 @@ let consistency_checking2 xs = match x with | Ast_c.DefineExpr e -> (match e with - | (Ast_c.Ident s, _), ii when List.mem s !ident_to_type -> - let t = (Ast_c.nQ, - (Ast_c.TypeName (s, Ast_c.noTypedefDef()), ii)) in - - Ast_c.DefineType t + | (Ast_c.Ident (ident), _), _ii -> + let s = Ast_c.str_of_name ident in + if List.mem s !ident_to_type + then + let t = ident_to_typename ident in + Ast_c.DefineType t + else k x | _ -> k x ) | _ -> k x @@ -490,12 +498,15 @@ let consistency_checking2 xs = (match e with | (Ast_c.ParenExpr e, _), iiparen -> (match e with - | (Ast_c.Ident s, _), ii when List.mem s !ident_to_type -> - let (i2, i3) = tuple_of_list2 iiparen in - let t = (Ast_c.nQ, - (Ast_c.TypeName (s, Ast_c.noTypedefDef()), ii)) in - (Ast_c.SizeOfType t, tref), [i1;i2;i3] - + | (Ast_c.Ident (ident), _), _ii -> + + let s = Ast_c.str_of_name ident in + if List.mem s !ident_to_type + then + let t = ident_to_typename ident in + let (i2, i3) = tuple_of_list2 iiparen in + (Ast_c.SizeOfType t, tref), [i1;i2;i3] + else k x | _ -> k x ) | _ -> k x @@ -583,7 +594,7 @@ and find_next_synchro_orig next already_passed = pr2 "ERROR-RECOV: end of file while in recovery mode"; already_passed, [] - | (Parser_c.TCBrace i as v)::xs when TH.col_of_tok v = 0 -> + | (Parser_c.TCBrace i as v)::xs when TH.col_of_tok v =|= 0 -> pr2 ("ERROR-RECOV: found sync '}' at line "^i_to_s (TH.line_of_tok v)); (match xs with @@ -622,7 +633,7 @@ and find_next_synchro_orig next already_passed = | _ -> v::already_passed, xs ) - | v::xs when TH.col_of_tok v = 0 && TH.is_start_of_something v -> + | v::xs when TH.col_of_tok v =|= 0 && TH.is_start_of_something v -> pr2 ("ERROR-RECOV: found sync col 0 at line "^ i_to_s(TH.line_of_tok v)); already_passed, v::xs @@ -849,7 +860,7 @@ let rec lexer_function ~pass tr = fun lexbuf -> else begin let x = List.hd tr.rest_clean in tr.rest_clean <- List.tl tr.rest_clean; - assert (x = v); + assert (x =*= v); (match v with @@ -861,8 +872,8 @@ let rec lexer_function ~pass tr = fun lexbuf -> * tr.passed, tr.rest, etc. *) | Parser_c.TDefine (tok) -> - if not (LP.current_context () = LP.InTopLevel) && - (!Flag_parsing_c.cpp_directive_passing || (pass = 2)) + if not (LP.current_context () =*= LP.InTopLevel) && + (!Flag_parsing_c.cpp_directive_passing || (pass =|= 2)) then begin incr Stat.nDefinePassing; pr2_once ("CPP-DEFINE: inside function, I treat it as comment"); @@ -880,8 +891,8 @@ let rec lexer_function ~pass tr = fun lexbuf -> end | Parser_c.TInclude (includes, filename, inifdef, info) -> - if not (LP.current_context () = LP.InTopLevel) && - (!Flag_parsing_c.cpp_directive_passing || (pass = 2)) + if not (LP.current_context () =*= LP.InTopLevel) && + (!Flag_parsing_c.cpp_directive_passing || (pass =|= 2)) then begin incr Stat.nIncludePassing; pr2_once ("CPP-INCLUDE: inside function, I treat it as comment"); @@ -910,7 +921,7 @@ let rec lexer_function ~pass tr = fun lexbuf -> if LP.is_typedef s && not (!Flag_parsing_c.disable_add_typedef) && - pass = 1 + pass =|= 1 then Parser_c.TypedefIdent (s, ii) else Parser_c.TIdent (s, ii) | x -> x @@ -961,7 +972,7 @@ let get_one_elem ~pass tr (file, filelines) = Left (Parser_c.celem (lexer_function ~pass tr) lexbuf_fake) ) with e -> begin - if (pass = 1 && !Flag_parsing_c.disable_two_pass)|| (pass = 2) + if (pass =|= 1 && !Flag_parsing_c.disable_two_pass)|| (pass =|= 2) then begin (match e with (* Lexical is not anymore launched I think *) @@ -1097,7 +1108,8 @@ let parse_print_error_heuristic2 file = then () else (* bugfix: *) - if (checkpoint_file = checkpoint2_file) && checkpoint_file = file + if (checkpoint_file =$= checkpoint2_file) && + checkpoint_file =$= file then print_bad line_error (checkpoint, checkpoint2) filelines else pr2 "PB: bad: but on tokens not from original file" ); @@ -1106,7 +1118,7 @@ let parse_print_error_heuristic2 file = let diffline = - if (checkpoint_file = checkpoint2_file) && (checkpoint_file = file) + if (checkpoint_file =$= checkpoint2_file) && (checkpoint_file =$= file) then (checkpoint2 - checkpoint) else 0 (* TODO? so if error come in middle of something ? where the diff --git a/parsing_c/parser_c.mly b/parsing_c/parser_c.mly index f6f91d5..e01b51f 100644 --- a/parsing_c/parser_c.mly +++ b/parsing_c/parser_c.mly @@ -1,7 +1,7 @@ %{ (* Yoann Padioleau * - * Copyright (C) 2002, 2006, 2007, 2008 Yoann Padioleau + * Copyright (C) 2002, 2006, 2007, 2008, 2009 Yoann Padioleau * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License (GPL) @@ -67,7 +67,7 @@ let fake_pi = Common.fake_parse_info let addStorageD = function | ((x,ii), ({storageD = (NoSto,[])} as v)) -> { v with storageD = (x, [ii]) } | ((x,ii), ({storageD = (y, ii2)} as v)) -> - if x = y then warning "duplicate storage classes" v + if x =*= y then warning "duplicate storage classes" v else raise (Semantic ("multiple storage classes", fake_pi)) let addInlineD = function @@ -215,17 +215,18 @@ let (fixOldCDecl: fullType -> fullType) = fun ty -> * definition), then you must write a name within the declarator. * Otherwise, you can omit the name. *) (match params with - | [((reg, None, ((_qua, (BaseType Void,_)))),_), _] -> + | [{p_namei = None; p_type = ((_qua, (BaseType Void,_)))},_] -> ty | params -> - (params +> List.iter (function - | (((b, None, _), ii1),ii2) -> + (params +> List.iter (fun (param,_) -> + match param with + | {p_namei = None} -> (* if majuscule, then certainly macro-parameter *) pr2 ("SEMANTIC:parameter name omitted, but I continue"); - | _ -> () - ); + | _ -> () + )); ty) - ) + (* todo? can we declare prototype in the decl or structdef, ... => length <> but good kan meme *) | _ -> @@ -237,7 +238,7 @@ let fixFunc (typ, compound, old_style_opt) = let (cp,iicp) = compound in match typ with - | ((s,iis), + | (name, (nQ, (FunctionType (fullt, (params,bool)),iifunc)), (st,iist), attrs) @@ -245,10 +246,10 @@ let fixFunc (typ, compound, old_style_opt) = let iistart = Ast_c.fakeInfo () in assert (nQ =*= nullQualif); (match params with - | [((reg, None, ((_qua, (BaseType Void,_)))),_), _] -> () + | [{p_namei= None; p_type =((_qua, (BaseType Void,_)))}, _] -> () | params -> params +> List.iter (function - | (((bool, Some s, fullt), _), _) -> () + | ({p_namei = Some s}, _) -> () | _ -> () (* failwith "internal errror: fixOldCDecl not good" *) ) @@ -270,22 +271,23 @@ let fixFunc (typ, compound, old_style_opt) = *) (match Ast_c.unwrap_typeC fullt with | FunctionType _ -> + let s = Ast_c.str_of_name name in + let iis = Ast_c.info_of_name name in pr2 (spf "WEIRD: %s declared as function returning a function." s); pr2 (spf "This is probably because of a macro. Extend standard.h"); raise (Semantic (spf "error: %s " s, Ast_c.parse_info_of_info iis)) | _ -> () ); - (* it must be nullQualif,cos parser construct only this*) - {f_name = s; + {f_name = name; f_type = (fullt, (params, bool)); f_storage = st; f_body = cp; f_attr = attrs; f_old_c_style = old_style_opt; }, - ([iis]++iifunc++iicp++[iistart]++iist) + (iifunc++iicp++[iistart]++iist) | _ -> raise (Semantic @@ -310,15 +312,16 @@ let fix_add_params_ident = function | ((s, (nQ, (FunctionType (fullt, (params, bool)),_)), st, _attrs)) -> (match params with - | [((reg, None, ((_qua, (BaseType Void,_)))),_), _] -> () + | [{p_namei=None; p_type=((_qua, (BaseType Void,_)))}, _] -> () | params -> - params +> List.iter (function - | (((bool, Some s, fullt), _), _) -> - LP.add_ident s - | _ -> - () - (* failwith "internal errror: fixOldCDecl not good" *) - )) + params +> List.iter (function + | ({p_namei= Some name}, _) -> + LP.add_ident (Ast_c.str_of_name s) + | _ -> + () + (* failwith "internal errror: fixOldCDecl not good" *) + ) + ) | _ -> () @@ -328,6 +331,8 @@ let fix_add_params_ident = function (*-------------------------------------------------------------------------- *) let mk_e e ii = ((e, Ast_c.noType()), ii) + +let mk_string_wrap (s,info) = (s, [info]) %} @@ -423,6 +428,8 @@ let mk_e e ii = ((e, Ast_c.noType()), ii) /*(* disappear after fix_tokens_define *)*/ %token TCppEscapedNewline +%token TCppConcatOp + /*(* appear after fix_tokens_define *)*/ %token TOParDefine %token TOBraceDefineInit @@ -471,6 +478,7 @@ let mk_e e ii = ((e, Ast_c.noType()), ii) %token <(string * Ast_c.info)> TMacroAttr %token <(string * Ast_c.info)> TMacroStmt +%token <(string * Ast_c.info)> TMacroIdentBuilder /*(* no need value for the moment *)*/ %token <(string * Ast_c.info)> TMacroString %token <(string * Ast_c.info)> TMacroDecl @@ -591,6 +599,33 @@ ident: identifier: | TIdent { $1 } +/* +(* cppext: string concatenation of idents + * also cppext: gccext: ##args for variadic macro + *) +*/ +ident_cpp: + | TIdent + { RegularName (mk_string_wrap $1) } + | TIdent TCppConcatOp identifier_cpp_list + { + CppConcatenatedName ( + match $3 with + | [] -> raise Impossible + | (x,concatnull)::xs -> + assert(null concatnull); + (mk_string_wrap $1, [])::(x,[$2])::xs + ) + } + | TCppConcatOp TIdent + { CppVariadicName (fst $2, [$1; snd $2]) } + | TMacroIdentBuilder TOPar param_define_list TCPar + { CppIdentBuilder ((fst $1, [snd $1;$2;$4]), $3) } + +identifier_cpp_list: + | TIdent { [mk_string_wrap $1, []] } + | identifier_cpp_list TCppConcatOp TIdent { $1 ++ [mk_string_wrap $3, [$2]] } + /*(*************************************************************************)*/ /*(* expr *)*/ /*(*************************************************************************)*/ @@ -672,8 +707,8 @@ postfix_expr: | postfix_expr TOPar argument_list_ne TCPar { mk_e(FunCall ($1, $3)) [$2;$4] } | postfix_expr TOPar TCPar { mk_e(FunCall ($1, [])) [$2;$3] } - | postfix_expr TDot ident { mk_e(RecordAccess ($1,fst $3)) [$2;snd $3] } - | postfix_expr TPtrOp ident { mk_e(RecordPtAccess ($1,fst $3)) [$2;snd $3] } + | postfix_expr TDot ident_cpp { mk_e(RecordAccess ($1,$3)) [$2] } + | postfix_expr TPtrOp ident_cpp { mk_e(RecordPtAccess ($1,$3)) [$2] } | postfix_expr TInc { mk_e(Postfix ($1, Inc)) [$2] } | postfix_expr TDec { mk_e(Postfix ($1, Dec)) [$2] } @@ -684,7 +719,7 @@ postfix_expr: { mk_e(Constructor ($2, List.rev $5)) ([$1;$3;$4;$7] ++ $6) } primary_expr: - | identifier { mk_e(Ident (fst $1)) [snd $1] } + | ident_cpp { mk_e(Ident ($1)) [] } | TInt { mk_e(Constant (Int (fst $1))) [snd $1] } | TFloat { mk_e(Constant (Float (fst $1))) [snd $1] } | TString { mk_e(Constant (String (fst $1))) [snd $1] } @@ -774,7 +809,7 @@ statement: * a Case (1, (Case (2, i++))) :( *)*/ labeled: - | ident TDotDot statement { Label (fst $1, $3), [snd $1; $2] } + | ident_cpp TDotDot statement { Label ($1, $3), [$2] } | Tcase const_expr TDotDot statement { Case ($2, $4), [$1; $3] } | Tcase const_expr TEllipsis const_expr TDotDot statement { CaseRange ($2, $4, $6), [$1;$3;$5] } /*(* gccext: allow range *)*/ @@ -787,8 +822,8 @@ end_labeled: * update: julia fixed the problem by introducing end_labeled * and modifying below stat_or_decl_list *)*/ - | ident TDotDot - { Label (fst $1, (ExprStatement None, [])), [snd $1; $2] } + | ident_cpp TDotDot + { Label ($1, (ExprStatement None, [])), [$2] } | Tcase const_expr TDotDot { Case ($2, (ExprStatement None, [])), [$1;$3] } | Tdefault TDotDot { Default (ExprStatement None, []), [$1; $2] } @@ -861,7 +896,7 @@ iteration: | Tfor TOPar decl expr_statement expr_opt TCPar statement { (* pr2 "DECL in for"; *) - MacroIteration ("toto", [], $7),[] (* TODOfake ast, TODO need decl2 ? *) + MacroIteration ("toto", [], $7),[$1;$2;$6] (* TODOfake ast, TODO need decl2 ? *) } /*(* cppext: *)*/ | TMacroIterator TOPar argument_list_ne TCPar statement @@ -871,7 +906,7 @@ iteration: /*(* the ';' in the caller grammar rule will be appended to the infos *)*/ jump: - | Tgoto ident { Goto (fst $2), [$1;snd $2] } + | Tgoto ident_cpp { Goto ($2), [$1] } | Tcontinue { Continue, [$1] } | Tbreak { Break, [$1] } | Treturn { Return, [$1] } @@ -941,7 +976,9 @@ type_spec2: * parse_typedef_fix4: try also to do now some consistency checking in * Parse_c *)*/ - | TypedefIdent { Right3 (TypeName (fst $1,Ast_c.noTypedefDef())), [snd $1]} + | TypedefIdent + { let name = RegularName (mk_string_wrap $1) in + Right3 (TypeName (name, Ast_c.noTypedefDef())),[] } | Ttypeof TOPar assign_expr TCPar { Right3 (TypeOfExpr ($3)), [$1;$2;$4] } | Ttypeof TOPar type_name TCPar { Right3 (TypeOfType ($3)), [$1;$2;$4] } @@ -1006,7 +1043,7 @@ pointer: direct_d: - | identifier + | ident_cpp { ($1, fun x -> x) } | TOPar declarator TCPar /*(* forunparser: old: $2 *)*/ { (fst $2, fun x -> (nQ, (ParenType ((snd $2) x), [$1;$3]))) } @@ -1076,18 +1113,26 @@ parameter_type_list: parameter_decl2: | decl_spec declaratorp - { let ((returnType,hasreg),iihasreg) = fixDeclSpecForParam $1 - in - (hasreg, Some (fst (fst $2)), ((snd $2) returnType)), - (iihasreg ++ [snd (fst $2)]) + { let ((returnType,hasreg),iihasreg) = fixDeclSpecForParam $1 in + let (name, ftyp) = $2 in + { p_namei = Some (name); + p_type = ftyp returnType; + p_register = (hasreg, iihasreg); + } } | decl_spec abstract_declaratorp - { let ((returnType,hasreg), iihasreg) = fixDeclSpecForParam $1 - in (hasreg, None, ($2 returnType)), (iihasreg ++ []) + { let ((returnType,hasreg), iihasreg) = fixDeclSpecForParam $1 in + { p_namei = None; + p_type = $2 returnType; + p_register = hasreg, iihasreg; + } } | decl_spec - { let ((returnType,hasreg), iihasreg) = fixDeclSpecForParam $1 - in (hasreg, None, returnType), (iihasreg ++ []) + { let ((returnType,hasreg), iihasreg) = fixDeclSpecForParam $1 in + { p_namei = None; + p_type = returnType; + p_register = hasreg, iihasreg; + } } @@ -1098,10 +1143,10 @@ parameter_decl2: parameter_decl: parameter_decl2 { et "param" (); $1 } declaratorp: - | declarator { LP.add_ident (fst (fst $1)); $1 } + | declarator { LP.add_ident (str_of_name (fst $1)); $1 } /*(* gccext: *)*/ - | attributes declarator { LP.add_ident (fst (fst $2)); $2 } - | declarator attributes { LP.add_ident (fst (fst $1)); $1 } + | attributes declarator { LP.add_ident (str_of_name (fst $2)); $2 } + | declarator attributes { LP.add_ident (str_of_name (fst $1)); $1 } abstract_declaratorp: | abstract_declarator { $1 } @@ -1171,15 +1216,16 @@ decl2: let (returnType,storage) = fixDeclSpecForDecl $1 in let iistart = Ast_c.fakeInfo () in DeclList ( - ($2 +> List.map (fun (((((s,iis),f),attrs), ini), iivirg) -> - let ini, iini = + ($2 +> List.map (fun ((((name,f),attrs), ini), iivirg) -> + let s = str_of_name name in + let iniopt = match ini with - | None -> None, [] - | Some (ini, iini) -> Some ini, [iini] + | None -> None + | Some (ini, iini) -> Some (iini, ini) in - if fst (unwrap storage) = StoTypedef + if fst (unwrap storage) =*= StoTypedef then LP.add_typedef s; - {v_namei = Some ((s, ini), iis::iini); + {v_namei = Some (name, iniopt); v_type = f returnType; v_storage = unwrap storage; v_local = local; @@ -1261,12 +1307,12 @@ init_declarator: init_declarator2 { dt "init" (); $1 } /*(*----------------------------*)*/ declaratori: - | declarator { LP.add_ident (fst (fst $1)); $1, Ast_c.noattr } + | declarator { LP.add_ident (str_of_name (fst $1)); $1, Ast_c.noattr } /*(* gccext: *)*/ - | declarator gcc_asm_decl { LP.add_ident (fst (fst $1)); $1, Ast_c.noattr } + | declarator gcc_asm_decl { LP.add_ident (str_of_name (fst $1)); $1, Ast_c.noattr } /*(* gccext: *)*/ - | attributes declarator { LP.add_ident (fst (fst $2)); $2, $1 } - | declarator attributes { LP.add_ident (fst (fst $1)); $1, Ast_c.noattr (* TODO *) } + | attributes declarator { LP.add_ident (str_of_name (fst $2)); $2, $1 } + | declarator attributes { LP.add_ident (str_of_name (fst $1)); $1, Ast_c.noattr (* TODO *) } @@ -1400,7 +1446,7 @@ field_declaration: if fst (unwrap storage) <> NoSto then internal_error "parsing dont allow this"; - FieldDeclList ([(Simple (None, returnType), []) , []], [$2]) + FieldDeclList ([(Simple (None, returnType)) , []], [$2]) } @@ -1409,15 +1455,11 @@ field_declaration: struct_declarator: | declaratorsd - { (fun x -> Simple (Some (fst (fst $1)), (snd $1) x), [snd (fst $1)]) } + { (fun x -> Simple (Some (fst $1), (snd $1) x)) } | dotdot const_expr2 - { (fun x -> BitField (None, x, $2), [$1]) } + { (fun x -> BitField (None, x, $1, $2)) } | declaratorsd dotdot const_expr2 - { (fun x -> BitField (Some (fst(fst $1)), - ((snd $1) x), - $3), - [snd (fst $1);$2]) - } + { (fun x -> BitField (Some (fst $1), ((snd $1) x), $2, $3)) } /*(*----------------------------*)*/ @@ -1456,16 +1498,15 @@ enum_spec: { EnumName (fst $2), [$1; snd $2] } enumerator: - | idente { (fst $1, None), [snd $1] } - | idente TEq const_expr { (fst $1, Some $3), [snd $1; $2] } - + | idente { $1, None } + | idente TEq const_expr { $1, Some ($2, $3) } /*(*----------------------------*)*/ /*(* workarounds *)*/ /*(*----------------------------*)*/ -idente: ident { LP.add_ident (fst $1); $1 } +idente: ident_cpp { LP.add_ident (str_of_name $1); $1 } @@ -1551,9 +1592,13 @@ cpp_directive: (DefineFunc ($4, [$3;$5]), $6)) } - | TUndef { Undef (fst $1, [snd $1]) } + | TUndef { Undef (fst $1, [snd $1]) } | TCppDirectiveOther { PragmaAndCo ([$1]) } + + + + /*(* perhaps better to use assign_expr ? but in that case need * do a assign_expr_of_string in parse_c *)*/ @@ -1598,10 +1643,12 @@ define_val: | /*(* empty *)*/ { DefineEmpty } + + param_define: - | TIdent { fst $1, [snd $1] } - | TypedefIdent { fst $1, [snd $1] } - | TDefParamVariadic { fst $1, [snd $1] } + | TIdent { mk_string_wrap $1 } + | TypedefIdent { mk_string_wrap $1 } + | TDefParamVariadic { mk_string_wrap $1 } | TEllipsis { "...", [$1] } /*(* they reuse keywords :( *)*/ | Tregister { "register", [$1] } diff --git a/parsing_c/parsing_hacks.ml b/parsing_c/parsing_hacks.ml index 4468f7a..866463b 100644 --- a/parsing_c/parsing_hacks.ml +++ b/parsing_c/parsing_hacks.ml @@ -280,6 +280,7 @@ type define_def = string * define_param * define_body | HintMacroString | HintMacroStatement | HintAttribute + | HintMacroIdentBuilder (* cf also data/test.h *) @@ -289,6 +290,8 @@ let assoc_hint_string = [ "YACFE_STRING" , HintMacroString; "YACFE_STATEMENT" , HintMacroStatement; "YACFE_ATTRIBUTE" , HintAttribute; + "YACFE_IDENT_BUILDER" , HintMacroIdentBuilder; + "MACROSTATEMENT" , HintMacroStatement; (* backward compatibility *) ] @@ -313,6 +316,8 @@ let (token_from_parsinghack_hint: Parser_c.TMacroStmt (s, ii) | HintAttribute -> Parser_c.TMacroAttr (s, ii) + | HintMacroIdentBuilder -> + Parser_c.TMacroIdentBuilder (s, ii) @@ -438,7 +443,7 @@ and mk_parameters extras acc_before_sep xs = | x::xs -> (match x.tok with (* synchro *) - | TOBrace _ when x.col = 0 -> + | TOBrace _ when x.col =|= 0 -> pr2 "PB: found synchro point } in paren"; [List.rev acc_before_sep], List.rev (extras), (x::xs) @@ -517,7 +522,7 @@ let rec mk_ifdef xs = | _ -> (* todo? can have some Ifdef in the line ? *) - let line, xs = Common.span (fun y -> y.line = x.line) (x::xs) in + let line, xs = Common.span (fun y -> y.line =|= x.line) (x::xs) in NotIfdefLine line::mk_ifdef xs ) @@ -562,7 +567,7 @@ and mk_ifdef_parameters extras acc_before_sep xs = let body, extras, xs = mk_ifdef_parameters (x::extras) [] xs in (List.rev acc_before_sep)::body, extras, xs | _ -> - let line, xs = Common.span (fun y -> y.line = x.line) (x::xs) in + let line, xs = Common.span (fun y -> y.line =|= x.line) (x::xs) in mk_ifdef_parameters extras (NotIfdefLine line::acc_before_sep) xs ) @@ -584,7 +589,7 @@ let rec span_line_paren line = function | PToken tok when TH.is_eof tok.tok -> [], x::xs | _ -> - if line_of_paren x = line + if line_of_paren x =|= line then let (l1, l2) = span_line_paren line xs in (x::l1, l2) @@ -623,7 +628,7 @@ let rec mk_body_function_grouped xs = ) | _ -> - let line, xs = Common.span (fun y -> y.line = x.line) (x::xs) in + let line, xs = Common.span (fun y -> y.line =|= x.line) (x::xs) in NotBodyLine line::mk_body_function_grouped xs ) @@ -719,7 +724,7 @@ let rec set_in_function_tag xs = | [] -> () (* ) { and the closing } is in column zero, then certainly a function *) | BToken ({tok = TCPar _ })::(Braceised (body, tok1, Some tok2))::xs - when tok1.col <> 0 && tok2.col = 0 -> + when tok1.col <> 0 && tok2.col =|= 0 -> body +> List.iter (iter_token_brace (fun tok -> tok.where <- InFunction )); @@ -728,7 +733,7 @@ let rec set_in_function_tag xs = | (BToken x)::xs -> set_in_function_tag xs | (Braceised (body, tok1, Some tok2))::xs - when tok1.col = 0 && tok2.col = 0 -> + when tok1.col =|= 0 && tok2.col =|= 0 -> body +> List.iter (iter_token_brace (fun tok -> tok.where <- InFunction )); @@ -1002,7 +1007,7 @@ let rec find_ifdef_mid xs = let counts = xxs +> List.map count_open_close_stuff_ifdef_clause in let cnt1, cnt2 = List.hd counts in if cnt1 <> 0 || cnt2 <> 0 && - counts +> List.for_all (fun x -> x = (cnt1, cnt2)) + counts +> List.for_all (fun x -> x =*= (cnt1, cnt2)) (* if counts +> List.exists (fun (cnt1, cnt2) -> cnt1 <> 0 || cnt2 <> 0 @@ -1567,13 +1572,13 @@ let rec find_macro_lineparen xs = Parenthised (xxs,info_parens); ] as _line1 )) - ::xs when col1 = 0 + ::xs when col1 =|= 0 -> let condition = (* to reduce number of false positive *) (match xs with | (Line (PToken ({col = col2 } as other)::restline2))::_ -> - TH.is_eof other.tok || (col2 = 0 && + TH.is_eof other.tok || (col2 =|= 0 && (match other.tok with | TOBrace _ -> false (* otherwise would match funcdecl *) | TCBrace _ when ctx <> InFunction -> false @@ -1620,7 +1625,7 @@ let rec find_macro_lineparen xs = (* when s ==~ regexp_macro *) -> let condition = - (col1 = col2 && + (col1 =|= col2 && (match other.tok with | TOBrace _ -> false (* otherwise would match funcdecl *) | TCBrace _ when ctx <> InFunction -> false @@ -1635,7 +1640,7 @@ let rec find_macro_lineparen xs = || (col2 <= col1 && (match other.tok, restline2 with - | TCBrace _, _ when ctx = InFunction -> true + | TCBrace _, _ when ctx =*= InFunction -> true | Treturn _, _ -> true | Tif _, _ -> true | Telse _, _ -> true @@ -1653,7 +1658,7 @@ let rec find_macro_lineparen xs = if condition then - if col1 = 0 then () + if col1 =|= 0 then () else begin msg_macro_noptvirg s; macro.tok <- TMacroStmt (s, TH.info_of_tok macro.tok); @@ -1681,7 +1686,7 @@ let rec find_macro_lineparen xs = (* when s ==~ regexp_macro *) let condition = - (col1 = col2 && + (col1 =|= col2 && col1 <> 0 && (* otherwise can match typedef of fundecl*) (match other.tok with | TPtVirg _ -> false @@ -1693,7 +1698,7 @@ let rec find_macro_lineparen xs = )) || (col2 <= col1 && (match other.tok with - | TCBrace _ when ctx = InFunction -> true + | TCBrace _ when ctx =*= InFunction -> true | Treturn _ -> true | Tif _ -> true | Telse _ -> true @@ -2034,7 +2039,7 @@ and define_line_2 acc line lastinfo xs = let acc = (TCommentSpace ii) :: acc in define_line_2 acc (line+1) info xs | x -> - if line' = line + if line' =|= line then define_line_2 (x::acc) line info xs else define_line_1 (mark_end_define lastinfo::acc) (x::xs) ) @@ -2179,7 +2184,7 @@ let lookahead2 ~pass next before = (* typedef inference, parse_typedef_fix3 *) (*-------------------------------------------------------------*) (* xx xx *) - | (TIdent(s,i1)::TIdent(s2,i2)::_ , _) when not_struct_enum before && s = s2 + | (TIdent(s,i1)::TIdent(s2,i2)::_ , _) when not_struct_enum before && s =$= s2 && ok_typedef s (* (take_safe 1 !passed_tok <> [TOPar]) -> *) -> @@ -2218,7 +2223,7 @@ let lookahead2 ~pass next before = (* [,(] xx [,)] AND param decl *) | (TIdent (s, i1)::(TComma _|TCPar _)::_ , (TComma _ |TOPar _)::_ ) - when not_struct_enum before && (LP.current_context() = LP.InParameter) + when not_struct_enum before && (LP.current_context() =*= LP.InParameter) && ok_typedef s -> msg_typedef s; LP.add_typedef_root s; @@ -2297,7 +2302,7 @@ let lookahead2 ~pass next before = (* [(,] xx [ AND parameterdeclaration *) | (TIdent (s, i1)::TOCro _::_, (TComma _ |TOPar _)::_) - when (LP.current_context() = LP.InParameter) + when (LP.current_context() =*= LP.InParameter) && ok_typedef s -> msg_typedef s; LP.add_typedef_root s; @@ -2321,7 +2326,7 @@ let lookahead2 ~pass next before = (* xx * yy, AND in paramdecl *) | (TIdent (s, i1)::TMul _::TIdent (s2, i2)::TComma _::_ , _) - when not_struct_enum before && (LP.current_context() = LP.InParameter) + when not_struct_enum before && (LP.current_context() =*= LP.InParameter) && ok_typedef s -> @@ -2340,7 +2345,7 @@ let lookahead2 ~pass next before = (* xx * yy , AND in Toplevel *) | (TIdent (s, i1)::TMul _::TIdent (s2, i2)::TComma _::_ , _) - when not_struct_enum before && (LP.current_context () = LP.InTopLevel) + when not_struct_enum before && (LP.current_context () =*= LP.InTopLevel) && ok_typedef s -> @@ -2400,7 +2405,7 @@ let lookahead2 ~pass next before = (* xx * yy) AND in paramdecl *) | (TIdent (s, i1)::TMul _::TIdent (s2, i2)::TCPar _::_ , _) - when not_struct_enum before && (LP.current_context () = LP.InParameter) + when not_struct_enum before && (LP.current_context () =*= LP.InParameter) && ok_typedef s -> msg_typedef s; LP.add_typedef_root s; @@ -2475,7 +2480,7 @@ let lookahead2 ~pass next before = | (TIdent (s, i1)::TCPar i2::(TIdent (_,i3)|TInt (_,i3))::_ , (TOPar info)::x::_) when not (TH.is_stuff_taking_parenthized x) && - Ast_c.line_of_info i2 = Ast_c.line_of_info i3 + Ast_c.line_of_info i2 =|= Ast_c.line_of_info i3 && ok_typedef s -> @@ -2565,10 +2570,10 @@ let lookahead2 ~pass next before = *) (* not !LP._lexer_hint.toplevel *) if !Flag_parsing_c.ifdef_directive_passing - || (pass = 2) + || (pass =|= 2) then begin - if (LP.current_context () = LP.InInitializer) + if (LP.current_context () =*= LP.InInitializer) then begin pr2_cpp "In Initializer passing"; (* cheat: dont count in stat *) incr Stat.nIfdefInitializer; @@ -2582,7 +2587,7 @@ let lookahead2 ~pass next before = | (TUndef (id, ii) as x)::_, _ -> - if (pass = 2) + if (pass =|= 2) then begin pr2_cpp("UNDEF: I treat it as comment"); TCommentCpp (Token_c.CppDirective, ii) @@ -2591,7 +2596,7 @@ let lookahead2 ~pass next before = | (TCppDirectiveOther (ii) as x)::_, _ -> - if (pass = 2) + if (pass =|= 2) then begin pr2_cpp ("OTHER directive: I treat it as comment"); TCommentCpp (Token_c.CppDirective, ii) @@ -2603,7 +2608,8 @@ let lookahead2 ~pass next before = * to count the '('. Because this can be expensive, we do that only * when the token contains "for_each". *) - | (TIdent (s, i1)::TOPar _::rest, _) when not (LP.current_context () = LP.InTopLevel) + | (TIdent (s, i1)::TOPar _::rest, _) + when not (LP.current_context () =*= LP.InTopLevel) (* otherwise a function such as static void loopback_enable(int i) { * will be considered as a loop *) diff --git a/parsing_c/parsing_hacks.mli b/parsing_c/parsing_hacks.mli index e18a461..7b41698 100644 --- a/parsing_c/parsing_hacks.mli +++ b/parsing_c/parsing_hacks.mli @@ -52,6 +52,7 @@ type define_def = string * define_param * define_body | HintMacroString | HintMacroStatement | HintAttribute + | HintMacroIdentBuilder val regexp_macro: Str.regexp val regexp_annot: Str.regexp diff --git a/parsing_c/pretty_print_c.ml b/parsing_c/pretty_print_c.ml index 83eaef3..f67d0f6 100644 --- a/parsing_c/pretty_print_c.ml +++ b/parsing_c/pretty_print_c.ml @@ -76,7 +76,7 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = let rec pp_expression = fun ((exp, typ), ii) -> (match exp, ii with - | Ident (c), [i] -> pr_elem i + | Ident (ident), [] -> pp_name ident (* only a MultiString can have multiple ii *) | Constant (MultiString _), is -> is +> List.iter pr_elem | Constant (c), [i] -> pr_elem i @@ -102,10 +102,10 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = | ArrayAccess (e1, e2), [i1;i2] -> pp_expression e1; pr_elem i1; pp_expression e2; pr_elem i2 - | RecordAccess (e, s), [i1;i2] -> - pp_expression e; pr_elem i1; pr_elem i2 - | RecordPtAccess (e, s), [i1;i2] -> - pp_expression e; pr_elem i1; pr_elem i2 + | RecordAccess (e, name), [i1] -> + pp_expression e; pr_elem i1; pp_name name; + | RecordPtAccess (e, name), [i1] -> + pp_expression e; pr_elem i1; pp_name name; | SizeOfExpr (e), [i] -> pr_elem i; pp_expression e | SizeOfType (t), [i1;i2;i3] -> @@ -173,10 +173,33 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = | ArgType param -> pp_param param | ArgAction action -> pp_action action) +(* ---------------------- *) + and pp_name = function + | RegularName (s, ii) -> + let (i1) = Common.tuple_of_list1 ii in + pr_elem i1 + | CppConcatenatedName xs -> + xs +> List.iter (fun ((x,ii1), ii2) -> + ii2 +> List.iter pr_elem; + ii1 +> List.iter pr_elem; + ) + | CppVariadicName (s, ii) -> + ii +> List.iter pr_elem + | CppIdentBuilder ((s,iis), xs) -> + let (iis, iop, icp) = Common.tuple_of_list3 iis in + pr_elem iis; + pr_elem iop; + xs +> List.iter (fun ((x,iix), iicomma) -> + iicomma +> List.iter pr_elem; + iix +> List.iter pr_elem; + ); + pr_elem icp + (* ---------------------- *) and pp_statement = function - | Labeled (Label (s, st)), [i1;i2] -> - pr_outdent(); pr_elem i1; pr_elem i2; pr_nl(); pp_statement st + | Labeled (Label (name, st)), ii -> + let (i2) = Common.tuple_of_list1 ii in + pr_outdent(); pp_name name; pr_elem i2; pr_nl(); pp_statement st | Labeled (Case (e, st)), [i1;i2] -> pr_unindent(); pr_elem i1; pp_expression e; pr_elem i2; pr_nl(); pr_indent(); @@ -252,8 +275,9 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = indent_if_needed st (function _ -> pp_statement st); pr_elem iifakend - | Jump (Goto s), [i1;i2;i3] -> - pr_elem i1; pr_space(); pr_elem i2; pr_elem i3; + | Jump (Goto name), ii -> + let (i1, i3) = Common.tuple_of_list2 ii in + pr_elem i1; pr_space(); pp_name name; pr_elem i3; | Jump ((Continue|Break|Return)), [i1;i2] -> pr_elem i1; pr_elem i2; | Jump (ReturnExpr e), [i1;i2] -> pr_elem i1; pr_space(); pp_expression e; pr_elem i2 @@ -280,14 +304,14 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = | MacroStmt, ii -> ii +> List.iter pr_elem ; - | ( Labeled (Label (_,_)) | Labeled (Case (_,_)) + | (Labeled (Case (_,_)) | Labeled (CaseRange (_,_,_)) | Labeled (Default _) | Compound _ | ExprStatement _ | Selection (If (_, _, _)) | Selection (Switch (_, _)) | Iteration (While (_, _)) | Iteration (DoWhile (_, _)) | Iteration (For ((_,_), (_,_), (_, _), _)) | Iteration (MacroIteration (_,_,_)) - | Jump (Goto _) | Jump ((Continue|Break|Return)) | Jump (ReturnExpr _) + | Jump ((Continue|Break|Return)) | Jump (ReturnExpr _) | Jump (GotoComputed _) | Decl _ ), _ -> raise Impossible @@ -418,58 +442,58 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = first var, we print the whole type *) (match x with - | (Simple (sopt, typ), iis), iivirg -> + | (Simple (nameopt, typ)), iivirg -> (* first var cant have a preceding ',' *) - assert (List.length iivirg = 0); + assert (List.length iivirg =|= 0); let identinfo = - (match sopt, iis with - None,_ -> None - | (Some s, [iis]) -> Some (s, iis) - | x -> raise Impossible) in + match nameopt with + | None -> None + | Some name -> Some (get_s_and_ii_of_name name) + in pp_type_with_ident identinfo None typ Ast_c.noattr; - | (BitField (sopt, typ, expr), ii), iivirg -> + | (BitField (nameopt, typ, iidot, expr)), iivirg -> (* first var cant have a preceding ',' *) - assert (List.length iivirg = 0); - (match sopt, ii with - | (None , [idot]) -> + assert (List.length iivirg =|= 0); + (match nameopt with + | None -> pp_type typ; - pr_elem idot; - pp_expression expr - | (Some s, [is;idot]) -> + | Some name -> + let (s, is) = get_s_and_ii_of_name name in pp_type_with_ident (Some (s, is)) None typ Ast_c.noattr; - pr_elem idot; - pp_expression expr - | x -> raise Impossible - )); (* match x, first onefield_multivars *) + ); + pr_elem iidot; + pp_expression expr + + ); (* match x, first onefield_multivars *) (* for other vars *) xs +> List.iter (function - | (Simple (sopt, typ), iis), iivirg -> + | (Simple (nameopt, typ)), iivirg -> iivirg +> List.iter pr_elem; let identinfo = - (match sopt, iis with - | None,_ -> None - | (Some s, [iis]) -> Some (s, iis) - | x -> raise Impossible) + match nameopt with + | None -> None + | Some name -> Some (get_s_and_ii_of_name name) in pp_type_with_ident_rest identinfo typ Ast_c.noattr - | (BitField (sopt, typ, expr), ii), iivirg -> + | (BitField (nameopt, typ, iidot, expr)), iivirg -> iivirg +> List.iter pr_elem; - (match sopt, ii with - | (Some s, [is;idot]) -> + (match nameopt with + | Some name -> + let (s,is) = get_s_and_ii_of_name name in pp_type_with_ident_rest (Some (s, is)) typ Ast_c.noattr; - pr_elem idot; + pr_elem iidot; pp_expression expr | x -> raise Impossible )); (* iter other vars *) | [] -> raise Impossible ); (* onefield_multivars *) - assert (List.length iiptvirg = 1); + assert (List.length iiptvirg =|= 1); iiptvirg +> List.iter pr_elem; @@ -501,13 +525,13 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = | x -> raise Impossible ); - enumt +> List.iter (fun (((s, eopt),ii_s_eq), iicomma) -> + enumt +> List.iter (fun ((name, eopt), iicomma) -> assert (List.length iicomma <= 1); iicomma +> List.iter (function x -> pr_elem x; pr_space()); - (match eopt, ii_s_eq with - | None, [is] -> pr_elem is; - | Some e, [is;ieq] -> pr_elem is; pr_elem ieq; pp_expression e - | _ -> raise Impossible + pp_name name; + eopt +> Common.do_option (fun (ieq, e) -> + pr_elem ieq; + pp_expression e; )); (match sopt, iis with @@ -527,16 +551,17 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = print_sto_qu_ty (sto, qu, iis); | (StructUnionName (s, structunion), iis) -> - assert (List.length iis = 2); + assert (List.length iis =|= 2); print_sto_qu_ty (sto, qu, iis); | (EnumName s, iis) -> - assert (List.length iis = 2); + assert (List.length iis =|= 2); print_sto_qu_ty (sto, qu, iis); - | (TypeName (s,_typ), iis) -> - assert (List.length iis = 1); - print_sto_qu_ty (sto, qu, iis); + | (TypeName (name,_typ), noii) -> + assert (null noii); + let (_s, iis) = get_s_and_ii_of_name name in + print_sto_qu_ty (sto, qu, [iis]); | (TypeOfExpr (e), iis) -> print_sto_qu (sto, qu); @@ -585,7 +610,7 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = | (StructUnion (_, sopt, fields),iis) -> print_ident ident | (StructUnionName (s, structunion), iis) -> print_ident ident | (EnumName s, iis) -> print_ident ident - | (TypeName (s,_typ), iis) -> print_ident ident + | (TypeName (_name,_typ), iis) -> print_ident ident | (TypeOfExpr (e), iis) -> print_ident ident | (TypeOfType (e), iis) -> print_ident ident @@ -675,7 +700,7 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = | (StructUnion (_, sopt, fields),iis) -> () | (StructUnionName (s, structunion), iis) -> () | (EnumName s, iis) -> () - | (TypeName (s,_typ), iis) -> () + | (TypeName (_name,_typ), iis) -> () | TypeOfType _, _ -> () | TypeOfExpr _, _ -> () @@ -683,22 +708,22 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = | (FunctionType _ | Array _ | Pointer _), _ -> raise Impossible - and pp_param ((b, sopt, t), ii_b_s) = - match b, sopt, ii_b_s with - | false, None, [] -> - pp_type t - | true, None, [i1] -> - pr_elem i1; - pp_type t - - | false, Some s, [i1] -> - pp_type_with_ident - (Some (s, i1)) None t Ast_c.noattr; - | true, Some s, [i1;i2] -> - pr_elem i1; + and pp_param param = + let {p_namei = nameopt; + p_register = (b,iib); + p_type=t;} = param in + + iib +> List.iter pr_elem; + + match nameopt with + | None -> + pp_type t + | Some name -> + let (s,i1) = get_s_and_ii_of_name name in pp_type_with_ident - (Some (s, i2)) None t Ast_c.noattr; - | _ -> raise Impossible + (Some (s, i1)) None t Ast_c.noattr + + and pp_type_right (((qu, iiqu), (ty, iity)) : fullType) = @@ -731,7 +756,7 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = | (StructUnion (_, sopt, fields),iis)-> () | (StructUnionName (s, structunion), iis) -> () | (EnumName s, iis) -> () - | (TypeName (s,_typ), iis) -> () + | (TypeName (name,_typ), iis) -> () | TypeOfType _, _ -> () | TypeOfExpr _, _ -> () @@ -743,49 +768,54 @@ let pretty_print_c pr_elem pr_space pr_nl pr_indent pr_outdent pr_unindent = (* ---------------------- *) and pp_decl = function - | DeclList ((({v_namei = var; v_type = returnType; - v_storage = storage; v_attr = attrs; + | DeclList ((({v_namei = var; + v_type = returnType; + v_storage = storage; + v_attr = attrs; },[])::xs), - iivirg::ifakestart::iisto) -> - - pr_elem ifakestart; - - (* old: iisto +> List.iter pr_elem; *) + iivirg::ifakestart::iisto) -> + + pr_elem ifakestart; + (* old: iisto +> List.iter pr_elem; *) - (* handling the first var. Special case, we print the whole type *) - (match var with - | Some ((s, ini), iis::iini) -> - pp_type_with_ident - (Some (s, iis)) (Some (storage, iisto)) - returnType attrs; - ini +> do_option (fun init -> - List.iter pr_elem iini; pp_init init); - | None -> pp_type returnType - | _ -> raise Impossible - ); + + (* handling the first var. Special case, we print the whole type *) + (match var with + | Some (name, iniopt) -> + let (s,iis) = get_s_and_ii_of_name name in + pp_type_with_ident + (Some (s, iis)) (Some (storage, iisto)) + returnType attrs; + iniopt +> do_option (fun (iini, init) -> + pr_elem iini; + pp_init init); + | None -> pp_type returnType + ); (* for other vars, we just call pp_type_with_ident_rest. *) - xs +> List.iter (function - | ({v_namei = Some ((s, ini), iis::iini); - v_type = returnType; - v_storage = storage2; - v_attr = attrs; - }, iivirg) -> - - assert (storage2 = storage); - iivirg +> List.iter pr_elem; - pp_type_with_ident_rest - (Some (s, iis)) returnType attrs; - ini +> do_option (fun (init) -> - List.iter pr_elem iini; pp_init init); + xs +> List.iter (function + | ({v_namei = Some (name, iniopt); + v_type = returnType; + v_storage = storage2; + v_attr = attrs; + }, iivirg) -> - - | x -> raise Impossible - ); - - pr_elem iivirg; - + let (s,iis) = get_s_and_ii_of_name name in + assert (storage2 =*= storage); + iivirg +> List.iter pr_elem; + pp_type_with_ident_rest + (Some (s, iis)) returnType attrs; + iniopt +> do_option (fun (iini, init) -> + pr_elem iini; pp_init init + ); + + + | x -> raise Impossible + ); + + pr_elem iivirg; + | MacroDecl ((s, es), iis::lp::rp::iiend::ifakestart::iisto) -> pr_elem ifakestart; iisto +> List.iter pr_elem; (* static and const *) @@ -860,13 +890,13 @@ and pp_init (init, iinit) = and pp_def def = let defbis, ii = def in match ii with - | is::iifunc1::iifunc2::i1::i2::ifakestart::isto -> - let {f_name = s; - f_type = (returnt, (paramst, (b, iib))); - f_storage = sto; - f_body = statxs; - f_attr = attrs; - } = defbis + | iifunc1::iifunc2::i1::i2::ifakestart::isto -> + let {f_name = name; + f_type = (returnt, (paramst, (b, iib))); + f_storage = sto; + f_body = statxs; + f_attr = attrs; + } = defbis in pr_elem ifakestart; @@ -874,7 +904,7 @@ and pp_init (init, iinit) = returnt Ast_c.noattr; pp_attributes pr_elem pr_space attrs; - pr_elem is; + pp_name name; pr_elem iifunc1; @@ -1145,10 +1175,10 @@ and pp_init (init, iinit) = | F.Return (st,((),ii)) -> (* iif ii *) pr2 "XXX" - | F.Goto (st, (s,ii)) -> + | F.Goto (st, name, ((),ii)) -> (* iif ii *) pr2 "XXX" - | F.Label (st, (s,ii)) -> + | F.Label (st, name, ((),ii)) -> (* iif ii *) pr2 "XXX" | F.EndStatement iopt -> diff --git a/parsing_c/test_parsing_c.ml b/parsing_c/test_parsing_c.ml index 10ea3ab..96cc546 100644 --- a/parsing_c/test_parsing_c.ml +++ b/parsing_c/test_parsing_c.ml @@ -67,7 +67,7 @@ let test_parse_gen xs ext = sprintf "bad = %d, timeout = %B" stat.Parsing_stat.bad stat.Parsing_stat.have_timeout in - if stat.Parsing_stat.bad = 0 && not stat.Parsing_stat.have_timeout + if stat.Parsing_stat.bad =|= 0 && not stat.Parsing_stat.have_timeout then Hashtbl.add newscore file (Common.Ok) else Hashtbl.add newscore file (Common.Pb s) ); @@ -84,7 +84,7 @@ let test_parse_gen xs ext = pr2_xxxxxxxxxxxxxxxxx(); let str = Str.global_replace (Str.regexp "/") "__" dirname in let def = if !Flag_parsing_c.filter_define_error then "_def_" else "" in - let ext = if ext = "c" then "" else ext in + let ext = if ext =$= "c" then "" else ext in Common.regression_testing newscore (Filename.concat score_path ("score_parsing__" ^str ^ def ^ ext ^ ".marshalled")) @@ -131,7 +131,7 @@ let test_cfg file = match specific_func, e with | None, _ -> true | Some s, Ast_c.Definition (defbis,_) -> - s = defbis.Ast_c.f_name + s =$= Ast_c.str_of_name (defbis.Ast_c.f_name) | _, _ -> false in @@ -284,7 +284,7 @@ let test_attributes file = Visitor_c.vk_program { Visitor_c.default_visitor_c with Visitor_c.kdef = (fun (k, bigf) (defbis, ii) -> let sattr = Ast_c.s_of_attr defbis.f_attr in - pr2 (spf "%-30s: %s" defbis.f_name sattr); + pr2 (spf "%-30s: %s" (Ast_c.str_of_name (defbis.f_name)) sattr); ); Visitor_c.kdecl = (fun (k, bigf) decl -> match decl with @@ -294,7 +294,7 @@ let test_attributes file = let sattr = Ast_c.s_of_attr onedecl.v_attr in let idname = match onedecl.v_namei with - | Some ((s,ini), _) -> s + | Some (name, ini) -> Ast_c.str_of_name name | None -> "novar" in pr2 (spf "%-30s: %s" idname sattr); diff --git a/parsing_c/token_helpers.ml b/parsing_c/token_helpers.ml index 65cc96a..cefa5e9 100644 --- a/parsing_c/token_helpers.ml +++ b/parsing_c/token_helpers.ml @@ -235,10 +235,13 @@ let info_of_tok = function | TCppEscapedNewline (ii) -> ii | TDefParamVariadic (s, i1) -> i1 + | TCppConcatOp (ii) -> ii + | TOBraceDefineInit (i1) -> i1 | TUnknown (i) -> i + | TMacroIdentBuilder (s, i) -> i | TMacroAttr (s, i) -> i | TMacroAttrStorage (s, i) -> i | TMacroStmt (s, i) -> i @@ -375,6 +378,9 @@ let visitor_info_of_tok f = function | TCppEscapedNewline (i1) -> TCppEscapedNewline (f i1) | TDefEOL (i1) -> TDefEOL (f i1) + + | TCppConcatOp (ii) -> TCppConcatOp (f ii) + | TOParDefine (i1) -> TOParDefine (f i1) | TIdentDefine (s, i) -> TIdentDefine (s, f i) @@ -385,6 +391,7 @@ let visitor_info_of_tok f = function | TUnknown (i) -> TUnknown (f i) + | TMacroIdentBuilder (s, i) -> TMacroIdentBuilder (s, f i) | TMacroAttr (s, i) -> TMacroAttr (s, f i) | TMacroAttrStorage (s, i) -> TMacroAttrStorage (s, f i) | TMacroStmt (s, i) -> TMacroStmt (s, f i) @@ -522,7 +529,7 @@ let is_abstract x = (* Helpers *) (*****************************************************************************) let is_same_line_or_close line tok = - line_of_tok tok = line || - line_of_tok tok = line - 1 || - line_of_tok tok = line - 2 + line_of_tok tok =|= line || + line_of_tok tok =|= line - 1 || + line_of_tok tok =|= line - 2 diff --git a/parsing_c/type_annoter_c.ml b/parsing_c/type_annoter_c.ml index e08b2c7..0707df8 100644 --- a/parsing_c/type_annoter_c.ml +++ b/parsing_c/type_annoter_c.ml @@ -166,7 +166,7 @@ type namedef = | StructUnionNameDef of string * (structUnion * structType) wrap (* cppext: *) - | Macro of string * define_body + | Macro of string * (define_kind * define_val) (* Because have nested scope, have nested list, hence the list list. @@ -236,7 +236,7 @@ let member_env lookupf env = let lookup_var s env = let f = function - | VarOrFunc (s2, typ) -> if s2 = s then Some typ else None + | VarOrFunc (s2, typ) -> if s2 =$= s then Some typ else None | _ -> None in lookup_env f env @@ -244,28 +244,28 @@ let lookup_var s env = let lookup_typedef s env = if !typedef_debug then pr2 ("looking for: " ^ s); let f = function - | TypeDef (s2, typ) -> if s2 = s then Some typ else None + | TypeDef (s2, typ) -> if s2 =$= s then Some typ else None | _ -> None in lookup_env f env let lookup_structunion (_su, s) env = let f = function - | StructUnionNameDef (s2, typ) -> if s2 = s then Some typ else None + | StructUnionNameDef (s2, typ) -> if s2 =$= s then Some typ else None | _ -> None in lookup_env f env let lookup_macro s env = let f = function - | Macro (s2, typ) -> if s2 = s then Some typ else None + | Macro (s2, typ) -> if s2 =$= s then Some typ else None | _ -> None in lookup_env f env let lookup_enum s env = let f = function - | EnumConstant (s2, typ) -> if s2 = s then Some typ else None + | EnumConstant (s2, typ) -> if s2 =$= s then Some typ else None | _ -> None in lookup_env f env @@ -363,7 +363,8 @@ let rec type_unfold_one_step ty env = ty ) - | TypeName (s,_typ) -> + | TypeName (name, _typ) -> + let s = Ast_c.str_of_name name in (try if !typedef_debug then pr2 "type_unfold_one_step: lookup_typedef"; let (t', env') = lookup_typedef s env in @@ -416,7 +417,8 @@ let rec typedef_fix ty env = | StructUnionName (su, s) -> ty (* keep the typename but complete with more information *) - | TypeName (s, typ) -> + | TypeName (name, typ) -> + let s = Ast_c.str_of_name name in (match typ with | Some _ -> pr2 ("typedef value already there:" ^ s); @@ -430,7 +432,7 @@ let rec typedef_fix ty env = * can have some weird mutually recursive typedef which * each new type alias search for its mutual def. *) - TypeName (s, Some (typedef_fix t' env')) +> Ast_c.rewrap_typeC ty + TypeName (name, Some (typedef_fix t' env')) +> Ast_c.rewrap_typeC ty with Not_found -> ty )) @@ -465,8 +467,13 @@ let type_of_s a = * normally. *) let offset (_,(ty,iis)) = - match iis with - ii::_ -> ii.Ast_c.pinfo + match ty, iis with + | TypeName (name, _typ), [] -> + (match name with + | RegularName (s, [ii]) -> ii.Ast_c.pinfo + | _ -> raise Todo + ) + | _, ii::_ -> ii.Ast_c.pinfo | _ -> failwith "type has no text; need to think again" @@ -526,7 +533,7 @@ let add_in_scope namedef = (* sort of hackish... *) let islocal info = - if List.length (!_scoped_env) = List.length !initial_env + if List.length (!_scoped_env) =|= List.length !initial_env then Ast_c.NotLocalVar else Ast_c.LocalVar info @@ -641,14 +648,14 @@ let annotater_expr_visitor_subpart = (fun (k,bigf) expr -> * Also as I don't want a warning on the Ident that are a FunCall, * easier to have a rule separate from the Ident rule. *) - | FunCall (((Ident s, typ), ii) as e1, args) -> + | FunCall (((Ident (ident), typ), _ii) as e1, args) -> (* recurse *) args +> List.iter (fun (e,ii) -> (* could typecheck if arguments agree with prototype *) Visitor_c.vk_argument bigf e ); - + let s = Ast_c.str_of_name ident in (match lookup_opt_env lookup_var s with | Some ((typ,local),_nextenv) -> @@ -726,7 +733,8 @@ let annotater_expr_visitor_subpart = (fun (k,bigf) expr -> (* -------------------------------------------------- *) - | Ident (s) -> + | Ident (ident) -> + let s = Ast_c.str_of_name ident in (match lookup_opt_env lookup_var s with | Some ((typ,local),_nextenv) -> make_info_fix (typ,local) @@ -799,8 +807,10 @@ let annotater_expr_visitor_subpart = (fun (k,bigf) expr -> (* -------------------------------------------------- *) (* fields *) - | RecordAccess (e, fld) - | RecordPtAccess (e, fld) as x -> + | RecordAccess (e, namefld) + | RecordPtAccess (e, namefld) as x -> + + let fld = Ast_c.str_of_name namefld in k expr; (* recurse to set the types-ref of sub expressions *) @@ -851,7 +861,8 @@ let annotater_expr_visitor_subpart = (fun (k,bigf) expr -> (* todo? lub, hmm maybe not, cos type must be e1 *) | Assignment (e1, op, e2) -> k expr; - Ast_c.get_type_expr e1 + (* value of an assignment is the value of the RHS expression *) + Ast_c.get_type_expr e2 | Sequence (e1, e2) -> k expr; Ast_c.get_type_expr e2 @@ -1037,7 +1048,9 @@ let rec visit_toplevel ~just_add_in_env ~depth elem = | Ast_c.LocalDecl -> Ast_c.LocalVar (offset t) in - var +> Common.do_option (fun ((s, ini), ii_s_ini) -> + var +> Common.do_option (fun (name, iniopt) -> + let s = Ast_c.str_of_name name in + match sto with | StoTypedef, _inline -> add_binding (TypeDef (s,Lib.al_type t)) true; @@ -1047,7 +1060,7 @@ let rec visit_toplevel ~just_add_in_env ~depth elem = if need_annotate_body then begin (* int x = sizeof(x) is legal so need process ini *) - ini +> Common.do_option (fun ini -> + iniopt +> Common.do_option (fun (info, ini) -> Visitor_c.vk_ini bigf ini ); end @@ -1079,10 +1092,12 @@ let rec visit_toplevel ~just_add_in_env ~depth elem = | Enum (sopt, enums), ii -> - enums +> List.iter (fun (((s, eopt),ii_s_eq), iicomma) -> + enums +> List.iter (fun ((name, eopt), iicomma) -> + + let s = Ast_c.str_of_name name in if need_annotate_body - then eopt +> Common.do_option (fun e -> + then eopt +> Common.do_option (fun (ieq, e) -> Visitor_c.vk_expr bigf e ); add_binding (EnumConstant (s, sopt)) true; @@ -1103,7 +1118,7 @@ let rec visit_toplevel ~just_add_in_env ~depth elem = _notyped_var := Hashtbl.create 100; match elem with | Definition def -> - let {f_name = funcs; + let {f_name = name; f_type = ((returnt, (paramst, b)) as ftyp); f_storage = sto; f_body = statxs; @@ -1113,10 +1128,11 @@ let rec visit_toplevel ~just_add_in_env ~depth elem = in let (i1, i2) = match ii with - | is::iifunc1::iifunc2::ibrace1::ibrace2::ifakestart::isto -> + | iifunc1::iifunc2::ibrace1::ibrace2::ifakestart::isto -> iifunc1, iifunc2 | _ -> raise Impossible in + let funcs = Ast_c.str_of_name name in (match oldstyle with | None -> @@ -1128,9 +1144,10 @@ let rec visit_toplevel ~just_add_in_env ~depth elem = if need_annotate_body then do_in_new_scope (fun () -> - paramst +> List.iter (fun (((b, s, t), _),_) -> - match s with - | Some s -> + paramst +> List.iter (fun ({p_namei= nameopt; p_type= t},_)-> + match nameopt with + | Some name -> + let s = Ast_c.str_of_name name in let local = Ast_c.LocalVar (offset t) in add_binding (VarOrFunc (s,(Lib.al_type t,local))) true | None -> diff --git a/parsing_c/type_annoter_c.mli b/parsing_c/type_annoter_c.mli index fe61cd8..8a03971 100644 --- a/parsing_c/type_annoter_c.mli +++ b/parsing_c/type_annoter_c.mli @@ -6,7 +6,7 @@ type namedef = | StructUnionNameDef of string * (Ast_c.structUnion * Ast_c.structType) Ast_c.wrap - | Macro of string * Ast_c.define_body + | Macro of string * (Ast_c.define_kind * Ast_c.define_val) (* have nested scope, so nested list*) type environment = namedef list list diff --git a/parsing_c/type_c.ml b/parsing_c/type_c.ml index 7fc2edc..5edbdd2 100644 --- a/parsing_c/type_c.ml +++ b/parsing_c/type_c.ml @@ -91,7 +91,7 @@ let rec is_completed_and_simplified ty = | StructUnionName (su, s) -> true (* should have completed with more information *) - | TypeName (s, typ) -> + | TypeName (_name, typ) -> (match typ with | None -> false | Some t -> @@ -260,7 +260,10 @@ let (fake_function_type: (match Ast_c.get_onlytype_expr e with | Some ft -> let paramtype = - (false, None, ft), [] + { Ast_c.p_namei = None; + p_register = false, Ast_c.noii; + p_type = ft; + } in Some (paramtype, ii) | None -> None @@ -348,10 +351,11 @@ let (type_field: fields +> List.iter (fun x -> match Ast_c.unwrap x with | DeclarationField (FieldDeclList (onefield_multivars, iiptvirg)) -> - onefield_multivars +> List.iter (fun fieldkind -> - match Ast_c.unwrap (Ast_c.unwrap fieldkind) with - | Simple (Some s, t) | BitField (Some s, t, _) -> - if s = fld + onefield_multivars +> List.iter (fun (fieldkind, iicomma) -> + match fieldkind with + | Simple (Some name, t) | BitField (Some name, t, _, _) -> + let s = Ast_c.str_of_name name in + if s =$= fld then Common.push2 t res else () @@ -417,7 +421,7 @@ let rec function_pointer_type_opt x = | FunctionType ft -> Some ft (* fix *) - | TypeName (_s, Some ft2) -> + | TypeName (_name, Some ft2) -> (match Ast_c.unwrap_typeC ft2 with | FunctionType ft -> Some ft | _ -> None @@ -428,7 +432,7 @@ let rec function_pointer_type_opt x = (* bugfix: for many fields in structure, the field is a typename * like irq_handler_t to a function pointer *) - | TypeName (s, Some ft) -> + | TypeName (_name, Some ft) -> function_pointer_type_opt ft (* bugfix: in field, usually it has some ParenType *) diff --git a/parsing_c/unparse_c.ml b/parsing_c/unparse_c.ml index 2a4faf6..2c2a238 100644 --- a/parsing_c/unparse_c.ml +++ b/parsing_c/unparse_c.ml @@ -21,6 +21,10 @@ open Ast_c module TH = Token_helpers +(* should keep comments and directives in between adjacent deleted terms, +but not comments and directives within deleted terms. should use the +labels found in the control-flow graph *) + (*****************************************************************************) @@ -193,7 +197,7 @@ let get_fakeInfo_and_tokens celem toks = let (before, x, after) = !toks_in +> Common.split_when (fun tok -> info =*= TH.info_of_tok tok) in - assert(info = TH.info_of_tok x); + assert(info =*= TH.info_of_tok x); (*old: assert(before +> List.for_all (TH.is_comment)); *) before +> List.iter (fun x -> if not (TH.is_comment x) @@ -263,6 +267,11 @@ let displace_fake_nodes toks = (* Tokens2 generation *) (*****************************************************************************) +let comment2t2 = function + (Token_c.TCommentCpp x,(info : Token_c.info)) -> + C2("\n"^info.Common.str^"\n") + | x -> failwith (Printf.sprintf "unexpected comment %s" (Common.dump x)) + let expand_mcode toks = let toks_out = ref [] in @@ -272,14 +281,14 @@ let expand_mcode toks = match t with | Fake1 info -> let str = Ast_c.str_of_info info in - if str = "" + if str =$= "" then push2 (Fake2) toks_out (* perhaps the fake ',' *) else push2 (C2 str) toks_out | T1 tok -> - let (a,b) = !((TH.info_of_tok tok).cocci_tag) in + (*let (a,b) = !((TH.info_of_tok tok).cocci_tag) in*) (* no tag on expandedTok ! *) (if (TH.is_expanded tok && !((TH.info_of_tok tok).cocci_tag) <> Ast_c.emptyAnnot) @@ -312,12 +321,18 @@ let expand_mcode toks = push2 (Cocci2 s) toks_out in let pr_c info = - match Ast_c.pinfo_of_info info with - Ast_c.AbstractLineTok _ -> push2 (C2 (Ast_c.str_of_info info)) toks_out - | Ast_c.FakeTok (s,_) -> push2 (C2 s) toks_out + (match Ast_c.pinfo_of_info info with + Ast_c.AbstractLineTok _ -> + push2 (C2 (Ast_c.str_of_info info)) toks_out + | Ast_c.FakeTok (s,_) -> + push2 (C2 s) toks_out | _ -> Printf.printf "line: %s\n" (Common.dump info); - failwith "not an abstract line" in + failwith "not an abstract line"); + (!(info.Ast_c.comments_tag)).Ast_c.mafter +> + List.iter (fun x -> Common.push2 (comment2t2 x) toks_out) in + + let pr_space _ = push2 (C2 " ") toks_out in @@ -367,18 +382,18 @@ let expand_mcode toks = (*****************************************************************************) let is_minusable_comment = function - | T2 (t,_b,_i) -> + | (T2 (t,_b,_i)) -> (match t with | Parser_c.TCommentSpace _ (* only whitespace *) (* patch: coccinelle *) | Parser_c.TCommentNewline _ (* newline plus whitespace *) | Parser_c.TComment _ | Parser_c.TCommentCpp (Token_c.CppAttr, _) - | Parser_c.TCommentCpp (Token_c.CppMacro, _) + | Parser_c.TCommentCpp (Token_c.CppMacro, _) + | Parser_c.TCommentCpp (Token_c.CppDirective, _) (* result was false *) -> true - | Parser_c.TCommentMisc _ - | Parser_c.TCommentCpp (Token_c.CppDirective, _) + | Parser_c.TCommentMisc _ | Parser_c.TCommentCpp (Token_c.CppPassingCosWouldGetError, _) -> false @@ -390,10 +405,8 @@ let all_coccis = function Cocci2 _ | C2 _ | Indent_cocci2 | Unindent_cocci2 -> true | _ -> false -let is_minusable_comment_or_plus = function -(* patch: coccinelle *) - T2(Parser_c.TCommentNewline _,_b,_i) -> false - | x -> is_minusable_comment x or all_coccis x +(*previously gave up if the first character was a newline, but not clear why*) +let is_minusable_comment_or_plus x = is_minusable_comment x or all_coccis x let set_minus_comment = function | T2 (t,false,idx) -> @@ -405,9 +418,11 @@ let set_minus_comment = function | Parser_c.TComment _ | Parser_c.TCommentCpp (Token_c.CppAttr, _) - | Parser_c.TCommentCpp (Token_c.CppMacro, _) + | Parser_c.TCommentCpp (Token_c.CppMacro, _) + | Parser_c.TCommentCpp (Token_c.CppDirective, _) -> - pr2 ("ERASING_COMMENTS: " ^ str) + pr2 (Printf.sprintf "%d: ERASING_COMMENTS: %s" + (TH.line_of_tok t) str) | _ -> raise Impossible ); T2 (t, true, idx) @@ -418,7 +433,6 @@ let set_minus_comment = function let set_minus_comment_or_plus = function Cocci2 _ | C2 _ | Indent_cocci2 | Unindent_cocci2 as x -> x | x -> set_minus_comment x - let remove_minus_and_between_and_expanded_and_fake xs = @@ -456,7 +470,7 @@ let remove_minus_and_between_and_expanded_and_fake xs = let rec adjust_after_brace = function [] -> [] | ((T2(_,false,_)) as x)::((T2(_,true,_)::_) as xs) - when str_of_token2 x = "{" -> + when str_of_token2 x =$= "{" -> let (between_minus,rest) = Common.span minus_or_comment xs in let is_whitespace = function T2(Parser_c.TCommentSpace _,_b,_i) @@ -485,7 +499,7 @@ let remove_minus_and_between_and_expanded_and_fake xs = (* The use of is_minusable_comment_or_plus and set_minus_comment_or_plus is because the + code can end up anywhere in the middle of the - code; it is not necessarily to the far left *) - let rec adjust_between_minus xs = + let rec adjust_between_minus xs = match xs with | [] -> [] | (T2 (t1,true,idx1))::xs -> @@ -496,12 +510,12 @@ let remove_minus_and_between_and_expanded_and_fake xs = | [] -> [(T2 (t1, true,idx1))] | (T2 (t2, true,idx2))::rest -> - (T2 (t1, true,idx1)):: - (List.map set_minus_comment_or_plus between_comments @ - adjust_between_minus ((T2 (t2, true, idx2))::rest)) - | x::xs -> - (T2 (t1, true, idx1)):: - (between_comments @ adjust_between_minus (x::xs)) + (T2 (t1, true,idx1)):: + (List.map set_minus_comment_or_plus between_comments @ + adjust_between_minus ((T2 (t2, true, idx2))::rest)) + | x::xs -> + (T2 (t1, true, idx1)):: + (between_comments @ adjust_between_minus (x::xs)) ) | x::xs -> x::adjust_between_minus xs in @@ -559,7 +573,7 @@ let rec add_space xs = let new_tabbing2 space = (list_of_string space) +> List.rev - +> Common.take_until (fun c -> c = '\n') + +> Common.take_until (fun c -> c =<= '\n') +> List.rev +> List.map string_of_char +> String.concat "" @@ -576,7 +590,7 @@ let rec adjust_indentation xs = (* try to pick a tabbing unit for the plus code *) let adjust_tabbing_unit old_tab new_tab = - if !tabbing_unit = None && String.length new_tab > String.length old_tab + if !tabbing_unit =*= None && String.length new_tab > String.length old_tab then let old_tab = list_of_string old_tab in let new_tab = list_of_string new_tab in @@ -592,14 +606,14 @@ let rec adjust_indentation xs = let rec loop = function ([],new_tab) -> string_of_list (List.rev new_tab) | (_,[]) -> "" (*weird; tabbing unit used up more than the current tab*) - | (t::ts,n::ns) when t = n -> loop (ts,ns) + | (t::ts,n::ns) when t =<= n -> loop (ts,ns) | (_,ns) -> (* mismatch; remove what we can *) string_of_list (List.rev ns) in loop (tu,current_tab) in let rec find_first_tab started = function [] -> () - | ((T2 (tok,_,_)) as x)::xs when str_of_token2 x = "{" -> + | ((T2 (tok,_,_)) as x)::xs when str_of_token2 x =$= "{" -> find_first_tab true xs (* patch: coccinelle *) | ((T2 (Parser_c.TCommentNewline s, _, _)) as x)::_ @@ -614,7 +628,7 @@ let rec adjust_indentation xs = | [] -> [] (* patch: coccinelle *) | ((T2 (tok,_,_)) as x)::(T2 (Parser_c.TCommentNewline s, _, _)):: - (Cocci2 "{")::xs when started && str_of_token2 x = ")" -> + (Cocci2 "{")::xs when started && str_of_token2 x =$= ")" -> (* to be done for if, etc, but not for a function header *) x::(Cocci2 " {")::(aux started xs) | ((T2 (Parser_c.TCommentNewline s, _, _)) as x)::xs -> @@ -624,7 +638,7 @@ let rec adjust_indentation xs = (if started then adjust_tabbing_unit old_tabbing !_current_tabbing); let coccis_rest = Common.span all_coccis xs in (match coccis_rest with - (_::_,((T2 (tok,_,_)) as y)::_) when str_of_token2 y = "}" -> + (_::_,((T2 (tok,_,_)) as y)::_) when str_of_token2 y =$= "}" -> (* the case where cocci code has been added before a close } *) x::aux started (Indent_cocci2::xs) | _ -> x::aux started xs) @@ -642,13 +656,13 @@ let rec adjust_indentation xs = aux started xs) (* border between existing code and cocci code *) | ((T2 (tok,_,_)) as x)::((Cocci2 "\n") as y)::xs - when str_of_token2 x = "{" -> + when str_of_token2 x =$= "{" -> x::aux true (y::Indent_cocci2::xs) | ((Cocci2 _) as x)::((T2 (tok,_,_)) as y)::xs - when str_of_token2 y = "}" -> + when str_of_token2 y =$= "}" -> x::aux started (y::Unindent_cocci2::xs) (* starting the body of the function *) - | ((T2 (tok,_,_)) as x)::xs when str_of_token2 x = "{" -> x::aux true xs + | ((T2 (tok,_,_)) as x)::xs when str_of_token2 x =$= "{" -> x::aux true xs | (Cocci2 "{")::xs -> (Cocci2 "{")::aux true xs | ((Cocci2 "\n") as x)::xs -> (* dont inline in expr because of weird eval order of ocaml *) @@ -663,15 +677,15 @@ let rec find_paren_comma = function (* do nothing if was like this in original file *) | ({ str = "("; idx = Some p1 } as _x1)::({ str = ","; idx = Some p2} as x2) - ::xs when p2 = p1 + 1 -> + ::xs when p2 =|= p1 + 1 -> find_paren_comma (x2::xs) | ({ str = ","; idx = Some p1 } as _x1)::({ str = ","; idx = Some p2} as x2) - ::xs when p2 = p1 + 1 -> + ::xs when p2 =|= p1 + 1 -> find_paren_comma (x2::xs) | ({ str = ","; idx = Some p1 } as _x1)::({ str = ")"; idx = Some p2} as x2) - ::xs when p2 = p1 + 1 -> + ::xs when p2 =|= p1 + 1 -> find_paren_comma (x2::xs) (* otherwise yes can adjust *) @@ -739,7 +753,7 @@ let print_all_tokens2 pr xs = let current_kind = ref KOrigin in xs +> List.iter (fun t -> let newkind = kind_of_token2 t in - if newkind = !current_kind + if newkind =*= !current_kind then pr (str_of_token2 t) else begin pr (end_mark); diff --git a/parsing_c/unparse_cocci.ml b/parsing_c/unparse_cocci.ml index dccb76a..89d25d4 100644 --- a/parsing_c/unparse_cocci.ml +++ b/parsing_c/unparse_cocci.ml @@ -106,13 +106,13 @@ let mcode fn arg = function (str,line,col) -> match line_before with None -> print_string str; Some line - | Some lb when line = lb -> print_string str; Some line + | Some lb when line =|= lb -> print_string str; Some line | _ -> print_string "\n"; print_string str; Some line) lb comments in let line_before = print_comments None info.Ast.strbef in (match line_before with None -> () - | Some lb when lb = info.Ast.line -> () + | Some lb when lb =|= info.Ast.line -> () | _ -> print_string "\n"); fn s; let _ = print_comments (Some info.Ast.line) info.Ast.straft in @@ -941,7 +941,7 @@ in (if unindent_before x then unindent()); pr "\n" in let newline_before _ = - if before = After + if before =*= After then let hd = List.hd xxs in match hd with @@ -952,7 +952,7 @@ in | (Ast.DeclarationTag _::_) | (Ast.Token ("}",_)::_) -> prnl hd | _ -> () in let newline_after _ = - if before = Before + if before =*= Before then match List.rev(List.hd(List.rev xxs)) with (Ast.StatementTag s::_) -> diff --git a/parsing_c/unparse_hrule.ml b/parsing_c/unparse_hrule.ml index 060d67c..21fd4b7 100644 --- a/parsing_c/unparse_hrule.ml +++ b/parsing_c/unparse_hrule.ml @@ -128,7 +128,8 @@ let get_function_name rule env = (* Print metavariable declarations *) let rec print_typedef pr = function - (Ast_c.TypeName(s,_),_) -> + (Ast_c.TypeName(name,_),_) -> + let s = Ast_c.str_of_name name in let typedefs = try List.assoc !current_outfile !typedefs with Not_found -> @@ -151,34 +152,50 @@ let rewrap_str s ii = | Ast_c.AbstractLineTok pi -> Ast_c.AbstractLineTok { pi with Common.str = s;})} +let rewrap_prefix_name prefix name = + match name with + | Ast_c.RegularName (s, iiname) -> + let iis = Common.tuple_of_list1 iiname in + let iis' = rewrap_str (prefix^s) iis in + Ast_c.RegularName (prefix ^ s, [iis']) + | Ast_c.CppConcatenatedName _ | Ast_c.CppVariadicName _ + | Ast_c.CppIdentBuilder _ + -> raise Common.Todo + + let print_metavar pr = function - ((_,Some param,(_,(Ast_c.Pointer(_,(Ast_c.BaseType(Ast_c.Void),_)),_))),_) + | {Ast_c.p_namei = Some name; + p_type = (_,(Ast_c.Pointer(_,(Ast_c.BaseType(Ast_c.Void),_)),_)); + } -> + let param = Ast_c.str_of_name name in pr ("expression "^prefix); pr param - | (((_,Some param,(_,ty)),il) : Ast_c.parameterType) -> - let il = - match List.rev il with - name::rest -> (rewrap_str (prefix^param) name) :: rest - | _ -> failwith "no name" in + | ({Ast_c.p_namei = Some name; p_type = (_,ty)} : Ast_c.parameterType) -> + + let name' = rewrap_prefix_name prefix name in + print_typedef pr ty; + Pretty_print_c.pp_param_gen (function x -> let str = Ast_c.str_of_info x in if not (List.mem str ["const";"volatile"]) then pr str) (function _ -> pr " ") - ((false,Some param, - (({Ast_c.const = false; Ast_c.volatile = false},[]),ty)), - il) + {Ast_c.p_register = (false,[]); + p_namei = Some name'; + p_type = (({Ast_c.const = false; Ast_c.volatile = false},[]),ty) + } | _ -> failwith "function must have named parameters" let make_exp = function - (((_,Some name,ty),param_ii),comma_ii) -> + ({Ast_c.p_namei = Some name; p_type = ty}, comma_ii) -> let no_info = (None,Ast_c.NotTest) in - let nm = prefix^name in + + let name' = rewrap_prefix_name prefix name in + let exp = - ((Ast_c.Ident nm,ref no_info), - [rewrap_str nm (List.hd(List.rev param_ii))]) in + ((Ast_c.Ident (name'),ref no_info),Ast_c.noii) in (name,(Common.Left exp,comma_ii)) | _ -> failwith "bad parameter" @@ -207,15 +224,23 @@ let print_extra_typedefs pr env = env let rename argids env = - let argenv = List.map (function arg -> (arg,prefix^arg)) argids in + let argenv = List.map (function name -> + let arg = Ast_c.str_of_name name in + (arg,prefix^arg) + ) argids in let lookup x = try List.assoc x argenv with Not_found -> x in let bigf = { Visitor_c.default_visitor_c_s with Visitor_c.kexpr_s = (fun (k,bigf) e -> match e with - ((Ast_c.Ident s, info), [ii]) -> + ((Ast_c.Ident (name), info), []) -> + + (* pad: assert is_regular_ident ? *) + let s = Ast_c.str_of_name name in + let ii = Ast_c.info_of_name name in let new_name = lookup s in - ((Ast_c.Ident new_name, info), [rewrap_str new_name ii]) + let new_id = Ast_c.RegularName (new_name, [rewrap_str new_name ii]) in + ((Ast_c.Ident (new_id), info), Ast_c.noii) | _ -> k e) } in List.map (function (x,vl) -> @@ -270,8 +295,10 @@ let pp_meta_decl pr env decl = match decl with Ast.MetaIdDecl(ar, name) -> no_arity ar; pr "identifier "; pp_name name; pr ";\n" - | Ast.MetaFreshIdDecl(ar, name) -> - no_arity ar; pr "fresh identifier "; pp_name name; pr ";\n" + | Ast.MetaFreshIdDecl(name, None) -> + pr "fresh identifier "; pp_name name; pr ";\n" + | Ast.MetaFreshIdDecl(name, Some x) -> + pr "fresh identifier "; pp_name name; pr " = \""; pr x; pr "\";\n" | Ast.MetaTypeDecl(ar, name) -> no_arity ar; pr "type "; pp_name name; pr ";\n" | Ast.MetaInitDecl(ar, name) -> @@ -326,7 +353,7 @@ let print_metavariables pr local_metas paramst env header_req function_name = pr (Printf.sprintf "position _p!=same_%s.p;\n" function_name); pr "identifier _f;\n"; let rec loop = function - [] | [(((_,_,(_,(Ast_c.BaseType(Ast_c.Void),_))),_),_)] -> [] + [] | [{Ast_c.p_type =(_,(Ast_c.BaseType(Ast_c.Void),_))},_] -> [] | ((first,_) as f)::rest -> print_metavar pr first; pr ";\n"; (make_exp f) :: loop rest in @@ -349,15 +376,15 @@ let print_end pr = (* Print call to the defined function *) let print_param_name pr = function - ((_,Some param,_),_) -> pr param + {Ast_c.p_namei = Some name} -> pr (Ast_c.str_of_name name) | _ -> failwith "function must have named parameters" let pp_def_gen pr defn isexp = - let {Ast_c.f_name = s; f_type = (_, (paramst, (b, iib))); } = defn in - pr s; pr "("; + let {Ast_c.f_name = name; f_type = (_, (paramst, (b, iib))); } = defn in + pr (Ast_c.str_of_name name); pr "("; (if b then failwith "not handling variable argument functions"); (match paramst with - [] | [(((_,_,(_,(Ast_c.BaseType(Ast_c.Void),_))),_),_)] -> () + [] | [{Ast_c.p_type = (_,(Ast_c.BaseType(Ast_c.Void),_))},_] -> () | (first,_)::rest -> print_param_name pr first; List.iter (function (x,_) -> pr ", "; print_param_name pr x) rest); diff --git a/parsing_c/visitor_c.ml b/parsing_c/visitor_c.ml index 258699d..923b9c4 100644 --- a/parsing_c/visitor_c.ml +++ b/parsing_c/visitor_c.ml @@ -119,7 +119,7 @@ module F = Control_flow_c * * The problem is that you don't have control about what is generated * and in our case we sometimes dont want to visit too much. For instance - * our visitor don't recuse on the type annotation of expressions + * our visitor don't recurse on the type annotation of expressions * Ok, this could be worked around, but the pb remains, you * don't have control and at some point you may want. In the same * way we want to enforce a certain order in the visit (ok this is not good, @@ -233,13 +233,15 @@ type visitor_c = kdecl: (declaration -> unit) * visitor_c -> declaration -> unit; kdef: (definition -> unit) * visitor_c -> definition -> unit; + kname : (name -> unit) * visitor_c -> name -> unit; + kini: (initialiser -> unit) * visitor_c -> initialiser -> unit; + kfield: (field -> unit) * visitor_c -> field -> unit; kcppdirective: (cpp_directive -> unit) * visitor_c -> cpp_directive -> unit; kdefineval : (define_val -> unit) * visitor_c -> define_val -> unit; kstatementseq: (statement_sequencable -> unit) * visitor_c -> statement_sequencable -> unit; - kfield: (field -> unit) * visitor_c -> field -> unit; (* CFG *) knode: (F.node -> unit) * visitor_c -> F.node -> unit; @@ -250,19 +252,20 @@ type visitor_c = } let default_visitor_c = - { kexpr = (fun (k,_) e -> k e); - kstatement = (fun (k,_) st -> k st); - ktype = (fun (k,_) t -> k t); - kdecl = (fun (k,_) d -> k d); - kdef = (fun (k,_) d -> k d); - kini = (fun (k,_) ie -> k ie); - kinfo = (fun (k,_) ii -> k ii); - knode = (fun (k,_) n -> k n); - ktoplevel = (fun (k,_) p -> k p); + { kexpr = (fun (k,_) e -> k e); + kstatement = (fun (k,_) st -> k st); + ktype = (fun (k,_) t -> k t); + kdecl = (fun (k,_) d -> k d); + kdef = (fun (k,_) d -> k d); + kini = (fun (k,_) ie -> k ie); + kname = (fun (k,_) x -> k x); + kinfo = (fun (k,_) ii -> k ii); + knode = (fun (k,_) n -> k n); + ktoplevel = (fun (k,_) p -> k p); kcppdirective = (fun (k,_) p -> k p); - kdefineval = (fun (k,_) p -> k p); - kstatementseq = (fun (k,_) p -> k p); - kfield = (fun (k,_) p -> k p); + kdefineval = (fun (k,_) p -> k p); + kstatementseq = (fun (k,_) p -> k p); + kfield = (fun (k,_) p -> k p); } @@ -277,7 +280,7 @@ let rec vk_expr = fun bigf expr -> and k ((e,_typ), ii) = iif ii; match e with - | Ident (s) -> () + | Ident (name) -> vk_name bigf name | Constant (c) -> () | FunCall (e, es) -> exprf e; @@ -293,8 +296,8 @@ let rec vk_expr = fun bigf expr -> | Binary (e1, op, e2) -> exprf e1; exprf e2; | ArrayAccess (e1, e2) -> exprf e1; exprf e2; - | RecordAccess (e, s) -> exprf e - | RecordPtAccess (e, s) -> exprf e + | RecordAccess (e, name) -> exprf e; vk_name bigf name + | RecordPtAccess (e, name) -> exprf e; vk_name bigf name | SizeOfExpr (e) -> exprf e | SizeOfType (t) -> vk_type bigf t @@ -321,7 +324,30 @@ let rec vk_expr = fun bigf expr -> in exprf expr +(* ------------------------------------------------------------------------ *) +and vk_name = fun bigf ident -> + let iif ii = vk_ii bigf ii in + let rec namef x = bigf.kname (k,bigf) x + and k id = + match id with + | RegularName (s, ii) -> iif ii + | CppConcatenatedName xs -> + xs +> List.iter (fun ((x,ii1), ii2) -> + iif ii2; + iif ii1; + ); + | CppVariadicName (s, ii) -> iif ii + | CppIdentBuilder ((s,iis), xs) -> + iif iis; + xs +> List.iter (fun ((x,iix), iicomma) -> + iif iicomma; + iif iix; + ) + in + namef ident + +(* ------------------------------------------------------------------------ *) and vk_statement = fun bigf (st: Ast_c.statement) -> @@ -359,7 +385,7 @@ and vk_statement = fun bigf (st: Ast_c.statement) -> vk_argument_list bigf es; statf st; - | Jump (Goto s) -> () + | Jump (Goto name) -> vk_name bigf name | Jump ((Continue|Break|Return)) -> () | Jump (ReturnExpr e) -> vk_expr bigf e; | Jump (GotoComputed e) -> vk_expr bigf e; @@ -416,10 +442,14 @@ and vk_type = fun bigf t -> ) | Enum (sopt, enumt) -> - enumt +> List.iter (fun (((s, eopt),ii_s_eq), iicomma) -> - iif ii_s_eq; iif iicomma; - eopt +> do_option (vk_expr bigf) - ); + enumt +> List.iter (fun ((name, eopt), iicomma) -> + vk_name bigf name; + iif iicomma; + eopt +> Common.do_option (fun (info, e) -> + iif [info]; + vk_expr bigf e + ) + ); | StructUnion (sopt, _su, fields) -> vk_struct_fields bigf fields @@ -428,7 +458,8 @@ and vk_type = fun bigf t -> | EnumName s -> () (* dont go in _typ *) - | TypeName (s, _typ) -> () + | TypeName (name,_typ) -> + vk_name bigf name | ParenType t -> typef t | TypeOfExpr e -> vk_expr bigf e @@ -465,15 +496,20 @@ and vk_decl = fun bigf d -> and vk_onedecl = fun bigf onedecl -> let iif ii = vk_ii bigf ii in match onedecl with - | ({v_namei = var; v_type = t; - v_storage = _sto; v_attr = attrs}) -> + | ({v_namei = var; + v_type = t; + v_storage = _sto; + v_attr = attrs}) -> vk_type bigf t; attrs +> List.iter (vk_attribute bigf); - var +> do_option (fun ((s, ini), ii_s_ini) -> - iif ii_s_ini; - ini +> do_option (vk_ini bigf) - ); + var +> Common.do_option (fun (name, iniopt) -> + vk_name bigf name; + iniopt +> Common.do_option (fun (info, ini) -> + iif [info]; + vk_ini bigf ini; + ); + ) and vk_ini = fun bigf ini -> let iif ii = vk_ii bigf ii in @@ -548,9 +584,12 @@ and vk_struct_fieldkinds = fun bigf onefield_multivars -> onefield_multivars +> List.iter (fun (field, iicomma) -> iif iicomma; match field with - | Simple (s, t), ii -> iif ii; vk_type bigf t; - | BitField (sopt, t, expr), ii -> - iif ii; + | Simple (nameopt, t) -> + Common.do_option (vk_name bigf) nameopt; + vk_type bigf t; + | BitField (nameopt, t, info, expr) -> + Common.do_option (vk_name bigf) nameopt; + vk_info bigf info; vk_expr bigf expr; vk_type bigf t ) @@ -766,8 +805,8 @@ and vk_node = fun bigf node -> | F.Continue (st,((),ii)) -> iif ii | F.Default (st,((),ii)) -> iif ii | F.Return (st,((),ii)) -> iif ii - | F.Goto (st, (s,ii)) -> iif ii - | F.Label (st, (s,ii)) -> iif ii + | F.Goto (st, name, ((),ii)) -> vk_name bigf name; iif ii + | F.Label (st, name, ((),ii)) -> vk_name bigf name; iif ii | F.DoHeader (st, info) -> infof info @@ -824,10 +863,12 @@ and vk_argument_list = fun bigf es -> -and vk_param = fun bigf (((b, s, t), ii_b_s)) -> +and vk_param = fun bigf param -> let iif ii = vk_ii bigf ii in - iif ii_b_s; - vk_type bigf t + let {p_namei = swrapopt; p_register = (b, iib); p_type=ft} = param in + swrapopt +> Common.do_option (vk_name bigf); + iif iib; + vk_type bigf ft and vk_param_list = fun bigf ts -> let iif ii = vk_ii bigf ii in @@ -913,6 +954,7 @@ type visitor_c_s = { kdecl_s: (declaration inout * visitor_c_s) -> declaration inout; kdef_s: (definition inout * visitor_c_s) -> definition inout; + kname_s: (name inout * visitor_c_s) -> name inout; kini_s: (initialiser inout * visitor_c_s) -> initialiser inout; @@ -934,6 +976,7 @@ let default_visitor_c_s = ktype_s = (fun (k,_) t -> k t); kdecl_s = (fun (k,_) d -> k d); kdef_s = (fun (k,_) d -> k d); + kname_s = (fun (k,_) x -> k x); kini_s = (fun (k,_) d -> k d); ktoplevel_s = (fun (k,_) p -> k p); knode_s = (fun (k,_) n -> k n); @@ -955,7 +998,7 @@ let rec vk_expr_s = fun bigf expr -> let typ' = typ in let e' = match unwrap_e with - | Ident (s) -> Ident (s) + | Ident (name) -> Ident (vk_name_s bigf name) | Constant (c) -> Constant (c) | FunCall (e, es) -> FunCall (exprf e, @@ -973,8 +1016,10 @@ let rec vk_expr_s = fun bigf expr -> | Binary (e1, op, e2) -> Binary (exprf e1, op, exprf e2) | ArrayAccess (e1, e2) -> ArrayAccess (exprf e1, exprf e2) - | RecordAccess (e, s) -> RecordAccess (exprf e, s) - | RecordPtAccess (e, s) -> RecordPtAccess (exprf e, s) + | RecordAccess (e, name) -> + RecordAccess (exprf e, vk_name_s bigf name) + | RecordPtAccess (e, name) -> + RecordPtAccess (exprf e, vk_name_s bigf name) | SizeOfExpr (e) -> SizeOfExpr (exprf e) | SizeOfType (t) -> SizeOfType (vk_type_s bigf t) @@ -997,6 +1042,7 @@ let rec vk_expr_s = fun bigf expr -> (e', typ'), (iif ii) in exprf expr + and vk_argument_s bigf argument = let iif ii = vk_ii_s bigf ii in let rec do_action = function @@ -1008,8 +1054,29 @@ and vk_argument_s bigf argument = | Right (ArgAction action) -> Right (ArgAction (do_action action)) ) +(* ------------------------------------------------------------------------ *) + +and vk_name_s = fun bigf ident -> + let iif ii = vk_ii_s bigf ii in + let rec namef x = bigf.kname_s (k,bigf) x + and k id = + (match id with + | RegularName (s,ii) -> RegularName (s, iif ii) + | CppConcatenatedName xs -> + CppConcatenatedName (xs +> List.map (fun ((x,ii1), ii2) -> + (x, iif ii1), iif ii2 + )) + | CppVariadicName (s, ii) -> CppVariadicName (s, iif ii) + | CppIdentBuilder ((s,iis), xs) -> + CppIdentBuilder ((s, iif iis), + xs +> List.map (fun ((x,iix), iicomma) -> + ((x, iif iix), iif iicomma))) + ) + in + namef ident +(* ------------------------------------------------------------------------ *) @@ -1061,7 +1128,7 @@ and vk_statement_s = fun bigf st -> )) - | Jump (Goto s) -> Jump (Goto s) + | Jump (Goto name) -> Jump (Goto (vk_name_s bigf name)) | Jump (((Continue|Break|Return) as x)) -> Jump (x) | Jump (ReturnExpr e) -> Jump (ReturnExpr ((vk_expr_s bigf) e)) | Jump (GotoComputed e) -> Jump (GotoComputed (vk_expr_s bigf e)); @@ -1089,7 +1156,7 @@ and vk_statement_sequencable_s = fun bigf stseq -> | IfdefStmt2 (ifdef, xxs) -> let ifdef' = List.map (vk_ifdef_directive_s bigf) ifdef in let xxs' = xxs +> List.map (fun xs -> - xs +> List.map (vk_statement_sequencable_s bigf) + xs +> vk_statement_sequencable_list_s bigf ) in IfdefStmt2(ifdef', xxs') @@ -1150,18 +1217,23 @@ and vk_type_s = fun bigf t -> | Enum (sopt, enumt) -> Enum (sopt, - enumt +> List.map (fun (((s, eopt),ii_s_eq), iicomma) -> - ((s, fmap (vk_expr_s bigf) eopt), iif ii_s_eq), - iif iicomma + enumt +> List.map (fun ((name, eopt), iicomma) -> + + ((vk_name_s bigf name, + eopt +> Common.fmap (fun (info, e) -> + vk_info_s bigf info, + vk_expr_s bigf e + )), + iif iicomma) + ) ) - ) | StructUnion (sopt, su, fields) -> StructUnion (sopt, su, vk_struct_fields_s bigf fields) | StructUnionName (s, structunion) -> StructUnionName (s, structunion) | EnumName s -> EnumName s - | TypeName (s, typ) -> TypeName (s, typ) + | TypeName (name, typ) -> TypeName (vk_name_s bigf name, typ) | ParenType t -> ParenType (typef t) | TypeOfExpr e -> TypeOfExpr (vk_expr_s bigf e) @@ -1196,14 +1268,18 @@ and vk_decl_s = fun bigf d -> iif ii) - and aux ({v_namei = var; v_type = t; - v_storage = sto; v_local= local; v_attr = attrs}, iicomma) = + and aux ({v_namei = var; + v_type = t; + v_storage = sto; + v_local= local; + v_attr = attrs}, iicomma) = {v_namei = - (var +> map_option (fun ((s, ini), ii_s_ini) -> - (s, ini +> map_option (fun init -> vk_ini_s bigf init)), - iif ii_s_ini - ) - ); + (var +> map_option (fun (name, iniopt) -> + vk_name_s bigf name, + iniopt +> map_option (fun (info, init) -> + vk_info_s bigf info, + vk_ini_s bigf init + ))); v_type = vk_type_s bigf t; v_storage = sto; v_local = local; @@ -1258,10 +1334,14 @@ and vk_struct_fieldkinds_s = fun bigf onefield_multivars -> onefield_multivars +> List.map (fun (field, iicomma) -> (match field with - | Simple (s, t), iis -> Simple (s, vk_type_s bigf t), iif iis - | BitField (sopt, t, expr), iis -> - BitField (sopt, vk_type_s bigf t, vk_expr_s bigf expr), - iif iis + | Simple (nameopt, t) -> + Simple (Common.map_option (vk_name_s bigf) nameopt, + vk_type_s bigf t) + | BitField (nameopt, t, info, expr) -> + BitField (Common.map_option (vk_name_s bigf) nameopt, + vk_type_s bigf t, + vk_info_s bigf info, + vk_expr_s bigf expr) ), iif iicomma ) @@ -1492,7 +1572,7 @@ and vk_node_s = fun bigf node -> i_content = copt; } -> - assert (copt = None); + assert (copt =*= None); F.Include {i_include = (s, iif ii); i_rel_pos = h_rel_pos; i_is_in_ifdef = b; @@ -1513,8 +1593,10 @@ and vk_node_s = fun bigf node -> | F.Continue (st,((),ii)) -> F.Continue (st,((),iif ii)) | F.Default (st,((),ii)) -> F.Default (st,((),iif ii)) | F.Return (st,((),ii)) -> F.Return (st,((),iif ii)) - | F.Goto (st, (s,ii)) -> F.Goto (st, (s,iif ii)) - | F.Label (st, (s,ii)) -> F.Label (st, (s,iif ii)) + | F.Goto (st, name, ((),ii)) -> + F.Goto (st, vk_name_s bigf name, ((),iif ii)) + | F.Label (st, name, ((),ii)) -> + F.Label (st, vk_name_s bigf name, ((),iif ii)) | F.EndStatement iopt -> F.EndStatement (map_option infof iopt) | F.DoHeader (st, info) -> F.DoHeader (st, infof info) | F.Else info -> F.Else (infof info) @@ -1539,9 +1621,13 @@ and vk_node_s = fun bigf node -> nodef node (* ------------------------------------------------------------------------ *) -and vk_param_s = fun bigf ((b, s, t), ii_b_s) -> +and vk_param_s = fun bigf param -> let iif ii = vk_ii_s bigf ii in - ((b, s, vk_type_s bigf t), iif ii_b_s) + let {p_namei = swrapopt; p_register = (b, iib); p_type=ft} = param in + { p_namei = swrapopt +> Common.map_option (vk_name_s bigf); + p_register = (b, iif iib); + p_type = vk_type_s bigf ft; + } let vk_args_splitted_s = fun bigf args_splitted -> let iif ii = vk_ii_s bigf ii in diff --git a/parsing_c/visitor_c.mli b/parsing_c/visitor_c.mli index a931e58..166cf64 100644 --- a/parsing_c/visitor_c.mli +++ b/parsing_c/visitor_c.mli @@ -4,18 +4,23 @@ type visitor_c = { kexpr : (expression -> unit) * visitor_c -> expression -> unit; kstatement : (statement -> unit) * visitor_c -> statement -> unit; ktype : (fullType -> unit) * visitor_c -> fullType -> unit; + kdecl : (declaration -> unit) * visitor_c -> declaration -> unit; kdef : (definition -> unit) * visitor_c -> definition -> unit; + kname : (name -> unit) * visitor_c -> name -> unit; + kini : (initialiser -> unit) * visitor_c -> initialiser -> unit; + kfield : (field -> unit) * visitor_c -> field -> unit; + kcppdirective: (cpp_directive -> unit) * visitor_c -> cpp_directive -> unit; - kdefineval : (define_val -> unit) * visitor_c -> define_val -> unit; + kdefineval : (define_val -> unit) * visitor_c -> define_val -> unit; kstatementseq: (statement_sequencable -> unit) * visitor_c -> statement_sequencable -> unit; - kfield: (field -> unit) * visitor_c -> field -> unit; - knode : + knode: (Control_flow_c.node -> unit) * visitor_c -> Control_flow_c.node -> unit; ktoplevel: (toplevel -> unit) * visitor_c -> toplevel -> unit; + kinfo : (info -> unit) * visitor_c -> info -> unit; } @@ -27,6 +32,7 @@ val vk_type : visitor_c -> fullType -> unit val vk_decl : visitor_c -> declaration -> unit val vk_onedecl : visitor_c -> onedecl -> unit val vk_ini : visitor_c -> initialiser -> unit +val vk_name : visitor_c -> name -> unit val vk_def : visitor_c -> definition -> unit val vk_node : visitor_c -> Control_flow_c.node -> unit val vk_info : visitor_c -> info -> unit @@ -51,23 +57,29 @@ val vk_define_params_splitted : - +(* ------------------------------------------------------------------------ *) type 'a inout = 'a -> 'a type visitor_c_s = { kexpr_s : expression inout * visitor_c_s -> expression inout; kstatement_s : statement inout * visitor_c_s -> statement inout; ktype_s : fullType inout * visitor_c_s -> fullType inout; + kdecl_s : declaration inout * visitor_c_s -> declaration inout; kdef_s : definition inout * visitor_c_s -> definition inout; + kname_s : name inout * visitor_c_s -> name inout; + kini_s : initialiser inout * visitor_c_s -> initialiser inout; + kcppdirective_s : (cpp_directive inout * visitor_c_s) -> cpp_directive inout; kdefineval_s : (define_val inout * visitor_c_s) -> define_val inout; kstatementseq_s: (statement_sequencable inout * visitor_c_s) -> statement_sequencable inout; kstatementseq_list_s: (statement_sequencable list inout * visitor_c_s) -> statement_sequencable list inout; + knode_s : Control_flow_c.node inout * visitor_c_s -> Control_flow_c.node inout; ktoplevel_s : toplevel inout * visitor_c_s -> toplevel inout; + kinfo_s : info inout * visitor_c_s -> info inout; } diff --git a/parsing_cocci/.depend b/parsing_cocci/.depend index aa6bc06..777990c 100644 --- a/parsing_cocci/.depend +++ b/parsing_cocci/.depend @@ -16,11 +16,9 @@ get_constants2.cmi: ast_cocci.cmi index.cmi: ast0_cocci.cmi insert_plus.cmi: ast0_cocci.cmi iso_compile.cmi: iso_pattern.cmi -iso_pattern.cmi: visitor_ast0.cmi ast_cocci.cmi ast0_cocci.cmi +iso_pattern.cmi: visitor_ast0_types.cmo ast_cocci.cmi ast0_cocci.cmi merge.cmi: ast_cocci.cmi ast0_cocci.cmi parse_cocci.cmi: ast_cocci.cmi -parser_cocci_menhir.cmi: parse_aux.cmo data.cmi ../commons/common.cmi \ - ast_cocci.cmi ast0_cocci.cmi plus.cmi: ast_cocci.cmi pretty_print_cocci.cmi: ast_cocci.cmi simple_assignments.cmi: ast0_cocci.cmi @@ -32,37 +30,41 @@ unify_ast.cmi: ast_cocci.cmi unitary_ast0.cmi: ast0_cocci.cmi unparse_ast0.cmi: ast0_cocci.cmi visitor_ast.cmi: ast_cocci.cmi -visitor_ast0.cmi: ast_cocci.cmi ast0_cocci.cmi -adjust_pragmas.cmo: visitor_ast0.cmi ast0_cocci.cmi adjust_pragmas.cmi -adjust_pragmas.cmx: visitor_ast0.cmx ast0_cocci.cmx adjust_pragmas.cmi +visitor_ast0.cmi: visitor_ast0_types.cmo ast_cocci.cmi ast0_cocci.cmi +adjust_pragmas.cmo: visitor_ast0_types.cmo visitor_ast0.cmi ast0_cocci.cmi \ + adjust_pragmas.cmi +adjust_pragmas.cmx: visitor_ast0_types.cmx visitor_ast0.cmx ast0_cocci.cmx \ + adjust_pragmas.cmi arity.cmo: ast_cocci.cmi ast0_cocci.cmi arity.cmi arity.cmx: ast_cocci.cmx ast0_cocci.cmx arity.cmi ast0_cocci.cmo: type_cocci.cmi ../globals/flag.cmo ast_cocci.cmi \ ast0_cocci.cmi ast0_cocci.cmx: type_cocci.cmx ../globals/flag.cmx ast_cocci.cmx \ ast0_cocci.cmi -ast0toast.cmo: visitor_ast0.cmi visitor_ast.cmi type_cocci.cmi \ - ../globals/flag.cmo ast_cocci.cmi ast0_cocci.cmi ast0toast.cmi -ast0toast.cmx: visitor_ast0.cmx visitor_ast.cmx type_cocci.cmx \ - ../globals/flag.cmx ast_cocci.cmx ast0_cocci.cmx ast0toast.cmi +ast0toast.cmo: visitor_ast0_types.cmo visitor_ast0.cmi visitor_ast.cmi \ + type_cocci.cmi ../globals/flag.cmo ast_cocci.cmi ast0_cocci.cmi \ + ast0toast.cmi +ast0toast.cmx: visitor_ast0_types.cmx visitor_ast0.cmx visitor_ast.cmx \ + type_cocci.cmx ../globals/flag.cmx ast_cocci.cmx ast0_cocci.cmx \ + ast0toast.cmi ast_cocci.cmo: type_cocci.cmi ../commons/common.cmi ast_cocci.cmi ast_cocci.cmx: type_cocci.cmx ../commons/common.cmx ast_cocci.cmi -check_meta.cmo: visitor_ast0.cmi type_cocci.cmi ../commons/common.cmi \ - ast_cocci.cmi ast0_cocci.cmi check_meta.cmi -check_meta.cmx: visitor_ast0.cmx type_cocci.cmx ../commons/common.cmx \ - ast_cocci.cmx ast0_cocci.cmx check_meta.cmi -comm_assoc.cmo: visitor_ast0.cmi unparse_ast0.cmi ../globals/flag.cmo \ - ast_cocci.cmi ast0_cocci.cmi comm_assoc.cmi -comm_assoc.cmx: visitor_ast0.cmx unparse_ast0.cmx ../globals/flag.cmx \ - ast_cocci.cmx ast0_cocci.cmx comm_assoc.cmi +check_meta.cmo: visitor_ast0_types.cmo visitor_ast0.cmi type_cocci.cmi \ + ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi check_meta.cmi +check_meta.cmx: visitor_ast0_types.cmx visitor_ast0.cmx type_cocci.cmx \ + ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx check_meta.cmi +comm_assoc.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unparse_ast0.cmi \ + ../globals/flag.cmo ast_cocci.cmi ast0_cocci.cmi comm_assoc.cmi +comm_assoc.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unparse_ast0.cmx \ + ../globals/flag.cmx ast_cocci.cmx ast0_cocci.cmx comm_assoc.cmi compute_lines.cmo: ast_cocci.cmi ast0_cocci.cmi compute_lines.cmi compute_lines.cmx: ast_cocci.cmx ast0_cocci.cmx compute_lines.cmi -context_neg.cmo: visitor_ast0.cmi unparse_ast0.cmi index.cmi \ - ../globals/flag.cmo compute_lines.cmi ../commons/common.cmi ast_cocci.cmi \ - ast0_cocci.cmi context_neg.cmi -context_neg.cmx: visitor_ast0.cmx unparse_ast0.cmx index.cmx \ - ../globals/flag.cmx compute_lines.cmx ../commons/common.cmx ast_cocci.cmx \ - ast0_cocci.cmx context_neg.cmi +context_neg.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unparse_ast0.cmi \ + index.cmi ../globals/flag.cmo compute_lines.cmi ../commons/common.cmi \ + ast_cocci.cmi ast0_cocci.cmi context_neg.cmi +context_neg.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unparse_ast0.cmx \ + index.cmx ../globals/flag.cmx compute_lines.cmx ../commons/common.cmx \ + ast_cocci.cmx ast0_cocci.cmx context_neg.cmi data.cmo: type_cocci.cmi ast_cocci.cmi ast0_cocci.cmi data.cmi data.cmx: type_cocci.cmx ast_cocci.cmx ast0_cocci.cmx data.cmi disjdistr.cmo: visitor_ast.cmi ../globals/flag.cmo ../commons/common.cmi \ @@ -73,12 +75,12 @@ free_vars.cmo: visitor_ast.cmi type_cocci.cmi ../commons/common.cmi \ ast_cocci.cmi free_vars.cmi free_vars.cmx: visitor_ast.cmx type_cocci.cmx ../commons/common.cmx \ ast_cocci.cmx free_vars.cmi -function_prototypes.cmo: visitor_ast0.cmi iso_pattern.cmi insert_plus.cmi \ - context_neg.cmi compute_lines.cmi ast_cocci.cmi ast0toast.cmi \ - ast0_cocci.cmi function_prototypes.cmi -function_prototypes.cmx: visitor_ast0.cmx iso_pattern.cmx insert_plus.cmx \ - context_neg.cmx compute_lines.cmx ast_cocci.cmx ast0toast.cmx \ - ast0_cocci.cmx function_prototypes.cmi +function_prototypes.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \ + iso_pattern.cmi insert_plus.cmi context_neg.cmi compute_lines.cmi \ + ast_cocci.cmi ast0toast.cmi ast0_cocci.cmi function_prototypes.cmi +function_prototypes.cmx: visitor_ast0_types.cmx visitor_ast0.cmx \ + iso_pattern.cmx insert_plus.cmx context_neg.cmx compute_lines.cmx \ + ast_cocci.cmx ast0toast.cmx ast0_cocci.cmx function_prototypes.cmi get_constants.cmo: visitor_ast.cmi type_cocci.cmi ../globals/flag.cmo \ ../commons/common.cmi ast_cocci.cmi get_constants.cmi get_constants.cmx: visitor_ast.cmx type_cocci.cmx ../globals/flag.cmx \ @@ -89,28 +91,24 @@ get_constants2.cmx: visitor_ast.cmx type_cocci.cmx ../globals/flag.cmx \ ../commons/common.cmx ast_cocci.cmx get_constants2.cmi index.cmo: ast_cocci.cmi ast0_cocci.cmi index.cmi index.cmx: ast_cocci.cmx ast0_cocci.cmx index.cmi -insert_plus.cmo: visitor_ast0.cmi pretty_print_cocci.cmi context_neg.cmi \ - ast_cocci.cmi ast0toast.cmi ast0_cocci.cmi insert_plus.cmi -insert_plus.cmx: visitor_ast0.cmx pretty_print_cocci.cmx context_neg.cmx \ - ast_cocci.cmx ast0toast.cmx ast0_cocci.cmx insert_plus.cmi -iso_compile.cmo: visitor_ast0.cmi ../commons/common.cmi ast_cocci.cmi \ - ast0_cocci.cmi iso_compile.cmi -iso_compile.cmx: visitor_ast0.cmx ../commons/common.cmx ast_cocci.cmx \ - ast0_cocci.cmx iso_compile.cmi -iso_pattern.cmo: visitor_ast0.cmi unparse_ast0.cmi type_cocci.cmi \ - flag_parsing_cocci.cmo ../globals/flag.cmo \ +insert_plus.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \ + pretty_print_cocci.cmi context_neg.cmi ast_cocci.cmi ast0toast.cmi \ + ast0_cocci.cmi insert_plus.cmi +insert_plus.cmx: visitor_ast0_types.cmx visitor_ast0.cmx \ + pretty_print_cocci.cmx context_neg.cmx ast_cocci.cmx ast0toast.cmx \ + ast0_cocci.cmx insert_plus.cmi +iso_compile.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \ + ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi iso_compile.cmi +iso_compile.cmx: visitor_ast0_types.cmx visitor_ast0.cmx \ + ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx iso_compile.cmi +iso_pattern.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unparse_ast0.cmi \ + type_cocci.cmi flag_parsing_cocci.cmo ../globals/flag.cmo \ ../commons/ocamlextra/dumper.cmi compute_lines.cmi ../commons/common.cmi \ ast_cocci.cmi ast0_cocci.cmi iso_pattern.cmi -iso_pattern.cmx: visitor_ast0.cmx unparse_ast0.cmx type_cocci.cmx \ - flag_parsing_cocci.cmx ../globals/flag.cmx \ +iso_pattern.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unparse_ast0.cmx \ + type_cocci.cmx flag_parsing_cocci.cmx ../globals/flag.cmx \ ../commons/ocamlextra/dumper.cmx compute_lines.cmx ../commons/common.cmx \ ast_cocci.cmx ast0_cocci.cmx iso_pattern.cmi -lexer_cocci.cmo: parser_cocci_menhir.cmi parse_aux.cmo ../globals/flag.cmo \ - data.cmi ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi -lexer_cocci.cmx: parser_cocci_menhir.cmx parse_aux.cmx ../globals/flag.cmx \ - data.cmx ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx -lexer_script.cmo: parser_cocci_menhir.cmi data.cmi ast_cocci.cmi -lexer_script.cmx: parser_cocci_menhir.cmx data.cmx ast_cocci.cmx main.cmo: parse_cocci.cmi main.cmx: parse_cocci.cmx merge.cmo: visitor_ast0.cmi ast_cocci.cmi ast0_cocci.cmi merge.cmi @@ -119,67 +117,69 @@ parse_aux.cmo: type_cocci.cmi semantic_cocci.cmo ../globals/flag.cmo data.cmi \ ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi parse_aux.cmx: type_cocci.cmx semantic_cocci.cmx ../globals/flag.cmx data.cmx \ ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx -parse_cocci.cmo: visitor_ast0.cmi unitary_ast0.cmi type_infer.cmi \ - test_exps.cmi single_statement.cmi simple_assignments.cmi \ - semantic_cocci.cmo pretty_print_cocci.cmi parser_cocci_menhir.cmi \ - parse_aux.cmo lexer_script.cmo lexer_cocci.cmo iso_pattern.cmi \ +parse_cocci.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unitary_ast0.cmi \ + type_infer.cmi test_exps.cmi single_statement.cmi simple_assignments.cmi \ + semantic_cocci.cmo pretty_print_cocci.cmi parse_aux.cmo iso_pattern.cmi \ iso_compile.cmi insert_plus.cmi get_constants2.cmi get_constants.cmi \ function_prototypes.cmi free_vars.cmi flag_parsing_cocci.cmo \ ../globals/flag.cmo disjdistr.cmi data.cmi context_neg.cmi \ - ../globals/config.cmo compute_lines.cmi ../commons/common.cmi \ - comm_assoc.cmi check_meta.cmi ast_cocci.cmi ast0toast.cmi ast0_cocci.cmi \ - arity.cmi adjust_pragmas.cmi parse_cocci.cmi -parse_cocci.cmx: visitor_ast0.cmx unitary_ast0.cmx type_infer.cmx \ - test_exps.cmx single_statement.cmx simple_assignments.cmx \ - semantic_cocci.cmx pretty_print_cocci.cmx parser_cocci_menhir.cmx \ - parse_aux.cmx lexer_script.cmx lexer_cocci.cmx iso_pattern.cmx \ + compute_lines.cmi ../commons/common.cmi comm_assoc.cmi check_meta.cmi \ + ast_cocci.cmi ast0toast.cmi ast0_cocci.cmi arity.cmi adjust_pragmas.cmi \ + parse_cocci.cmi +parse_cocci.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unitary_ast0.cmx \ + type_infer.cmx test_exps.cmx single_statement.cmx simple_assignments.cmx \ + semantic_cocci.cmx pretty_print_cocci.cmx parse_aux.cmx iso_pattern.cmx \ iso_compile.cmx insert_plus.cmx get_constants2.cmx get_constants.cmx \ function_prototypes.cmx free_vars.cmx flag_parsing_cocci.cmx \ ../globals/flag.cmx disjdistr.cmx data.cmx context_neg.cmx \ - ../globals/config.cmx compute_lines.cmx ../commons/common.cmx \ - comm_assoc.cmx check_meta.cmx ast_cocci.cmx ast0toast.cmx ast0_cocci.cmx \ - arity.cmx adjust_pragmas.cmx parse_cocci.cmi -parser_cocci_menhir.cmo: type_cocci.cmi top_level.cmi semantic_cocci.cmo \ - parse_aux.cmo data.cmi ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi \ - parser_cocci_menhir.cmi -parser_cocci_menhir.cmx: type_cocci.cmx top_level.cmx semantic_cocci.cmx \ - parse_aux.cmx data.cmx ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx \ - parser_cocci_menhir.cmi + compute_lines.cmx ../commons/common.cmx comm_assoc.cmx check_meta.cmx \ + ast_cocci.cmx ast0toast.cmx ast0_cocci.cmx arity.cmx adjust_pragmas.cmx \ + parse_cocci.cmi plus.cmo: visitor_ast.cmi ast_cocci.cmi plus.cmi plus.cmx: visitor_ast.cmx ast_cocci.cmx plus.cmi pretty_print_cocci.cmo: type_cocci.cmi ../globals/flag.cmo \ ../commons/common.cmi ast_cocci.cmi pretty_print_cocci.cmi pretty_print_cocci.cmx: type_cocci.cmx ../globals/flag.cmx \ ../commons/common.cmx ast_cocci.cmx pretty_print_cocci.cmi -simple_assignments.cmo: visitor_ast0.cmi ../globals/flag.cmo \ - ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi simple_assignments.cmi -simple_assignments.cmx: visitor_ast0.cmx ../globals/flag.cmx \ - ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx simple_assignments.cmi -single_statement.cmo: visitor_ast0.cmi iso_pattern.cmi flag_parsing_cocci.cmo \ - compute_lines.cmi ast_cocci.cmi ast0_cocci.cmi single_statement.cmi -single_statement.cmx: visitor_ast0.cmx iso_pattern.cmx flag_parsing_cocci.cmx \ - compute_lines.cmx ast_cocci.cmx ast0_cocci.cmx single_statement.cmi -test_exps.cmo: visitor_ast0.cmi ast_cocci.cmi ast0_cocci.cmi test_exps.cmi -test_exps.cmx: visitor_ast0.cmx ast_cocci.cmx ast0_cocci.cmx test_exps.cmi +simple_assignments.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \ + ../globals/flag.cmo ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi \ + simple_assignments.cmi +simple_assignments.cmx: visitor_ast0_types.cmx visitor_ast0.cmx \ + ../globals/flag.cmx ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx \ + simple_assignments.cmi +single_statement.cmo: visitor_ast0_types.cmo visitor_ast0.cmi iso_pattern.cmi \ + flag_parsing_cocci.cmo compute_lines.cmi ast_cocci.cmi ast0_cocci.cmi \ + single_statement.cmi +single_statement.cmx: visitor_ast0_types.cmx visitor_ast0.cmx iso_pattern.cmx \ + flag_parsing_cocci.cmx compute_lines.cmx ast_cocci.cmx ast0_cocci.cmx \ + single_statement.cmi +test_exps.cmo: visitor_ast0_types.cmo visitor_ast0.cmi ast_cocci.cmi \ + ast0_cocci.cmi test_exps.cmi +test_exps.cmx: visitor_ast0_types.cmx visitor_ast0.cmx ast_cocci.cmx \ + ast0_cocci.cmx test_exps.cmi top_level.cmo: ast0_cocci.cmi top_level.cmi top_level.cmx: ast0_cocci.cmx top_level.cmi type_cocci.cmo: type_cocci.cmi type_cocci.cmx: type_cocci.cmi -type_infer.cmo: visitor_ast0.cmi type_cocci.cmi ast_cocci.cmi ast0_cocci.cmi \ - type_infer.cmi -type_infer.cmx: visitor_ast0.cmx type_cocci.cmx ast_cocci.cmx ast0_cocci.cmx \ - type_infer.cmi +type_infer.cmo: visitor_ast0_types.cmo visitor_ast0.cmi type_cocci.cmi \ + ast_cocci.cmi ast0_cocci.cmi type_infer.cmi +type_infer.cmx: visitor_ast0_types.cmx visitor_ast0.cmx type_cocci.cmx \ + ast_cocci.cmx ast0_cocci.cmx type_infer.cmi unify_ast.cmo: visitor_ast.cmi ast_cocci.cmi unify_ast.cmi unify_ast.cmx: visitor_ast.cmx ast_cocci.cmx unify_ast.cmi -unitary_ast0.cmo: visitor_ast0.cmi ../globals/flag.cmo ast_cocci.cmi \ - ast0_cocci.cmi unitary_ast0.cmi -unitary_ast0.cmx: visitor_ast0.cmx ../globals/flag.cmx ast_cocci.cmx \ - ast0_cocci.cmx unitary_ast0.cmi +unitary_ast0.cmo: visitor_ast0_types.cmo visitor_ast0.cmi ../globals/flag.cmo \ + ast_cocci.cmi ast0_cocci.cmi unitary_ast0.cmi +unitary_ast0.cmx: visitor_ast0_types.cmx visitor_ast0.cmx ../globals/flag.cmx \ + ast_cocci.cmx ast0_cocci.cmx unitary_ast0.cmi unparse_ast0.cmo: type_cocci.cmi pretty_print_cocci.cmi ../commons/common.cmi \ ast0_cocci.cmi unparse_ast0.cmi unparse_ast0.cmx: type_cocci.cmx pretty_print_cocci.cmx ../commons/common.cmx \ ast0_cocci.cmx unparse_ast0.cmi -visitor_ast.cmo: ast_cocci.cmi visitor_ast.cmi -visitor_ast.cmx: ast_cocci.cmx visitor_ast.cmi -visitor_ast0.cmo: ast_cocci.cmi ast0_cocci.cmi visitor_ast0.cmi -visitor_ast0.cmx: ast_cocci.cmx ast0_cocci.cmx visitor_ast0.cmi +visitor_ast.cmo: ast_cocci.cmi ast0_cocci.cmi visitor_ast.cmi +visitor_ast.cmx: ast_cocci.cmx ast0_cocci.cmx visitor_ast.cmi +visitor_ast0.cmo: visitor_ast0_types.cmo ast_cocci.cmi ast0_cocci.cmi \ + visitor_ast0.cmi +visitor_ast0.cmx: visitor_ast0_types.cmx ast_cocci.cmx ast0_cocci.cmx \ + visitor_ast0.cmi +visitor_ast0_types.cmo: ast_cocci.cmi ast0_cocci.cmi +visitor_ast0_types.cmx: ast_cocci.cmx ast0_cocci.cmx diff --git a/parsing_cocci/Makefile b/parsing_cocci/Makefile index b0044d9..cf02ae3 100644 --- a/parsing_cocci/Makefile +++ b/parsing_cocci/Makefile @@ -26,7 +26,7 @@ LEXER_SOURCES = lexer_cocci.mll SCRIPT_LEXER_SOURCES = lexer_script.mll PARSER_SOURCES = parser_cocci_menhir.mly SOURCES = flag_parsing_cocci.ml type_cocci.ml ast_cocci.ml ast0_cocci.ml \ -pretty_print_cocci.ml unparse_ast0.ml \ +pretty_print_cocci.ml unparse_ast0.ml visitor_ast0_types.ml \ visitor_ast.ml visitor_ast0.ml compute_lines.ml comm_assoc.ml \ iso_pattern.ml iso_compile.ml single_statement.ml simple_assignments.ml \ ast0toast.ml check_meta.ml top_level.ml type_infer.ml test_exps.ml \ @@ -37,7 +37,7 @@ $(LEXER_SOURCES:.mll=.ml) $(PARSER_SOURCES:.mly=.ml) \ $(SCRIPT_LEXER_SOURCES:.mll=.ml) \ get_constants.ml get_constants2.ml parse_cocci.ml -LIBS=../commons/commons.cma ../globals/globals.cma +LIBS=../commons/commons.cma ../globals/globals.cma SYSLIBS = str.cma unix.cma #MENHIR_PATH=$(shell ocamlfind query menhirLib) @@ -77,7 +77,7 @@ $(LIB): $(GENERATED) $(OBJS) $(OCAMLC) -I $(MENHIR_PATH) -a -o $(LIB) $(MENHIR) $(OBJS) -$(OPTLIB): $(GENERATED) $(OPTOBJS) +$(OPTLIB): $(GENERATED) $(OPTOBJS) $(OCAMLOPT) -I $(MENHIR_PATH) -a -o $(OPTLIB) $(MENHIRO) $(OPTOBJS) @@ -89,7 +89,7 @@ $(EXEC): $(OBJS) main.cmo $(LIBS) clean:: rm -f $(LIB) - rm -f $(OPTLIB) $(LIB:.cma=.a) + rm -f $(OPTLIB) $(LIB:.cma=.a) rm -f $(TARGET) @@ -122,7 +122,10 @@ clean:: # clean rule for others files clean:: rm -f *.cm[iox] *.o *.annot - rm -f *~ .*~ #*# + rm -f *~ .*~ #*# + +distclean:: + rm -f .depend depend: $(GENERATED) $(OCAMLDEP) *.mli *.ml > .depend diff --git a/parsing_cocci/adjust_pragmas.ml b/parsing_cocci/adjust_pragmas.ml index d4a9f8c..8688e5c 100644 --- a/parsing_cocci/adjust_pragmas.ml +++ b/parsing_cocci/adjust_pragmas.ml @@ -3,6 +3,7 @@ given None, because they can accomodate their own directives or comments *) module Ast0 = Ast0_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types let call_right processor data s cont = match processor data with @@ -243,9 +244,6 @@ let rec left_decl decl = call_right left_decl d decl (function decl -> Ast0.UniqueDecl(decl)) let process = - let donothing r k e = k e in - let mcode x = x in - let statement r k s = let s = k s in Ast0.rewrap s @@ -295,9 +293,6 @@ let process = | _ -> Ast0.unwrap s) in let res = V0.rebuilder - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - donothing donothing donothing donothing donothing donothing statement - donothing donothing in + {V0.rebuilder_functions with VT0.rebuilder_stmtfn = statement} in - List.map res.V0.rebuilder_top_level + List.map res.VT0.rebuilder_rec_top_level diff --git a/parsing_cocci/ast0_cocci.ml b/parsing_cocci/ast0_cocci.ml index 462a24d..cee3396 100644 --- a/parsing_cocci/ast0_cocci.ml +++ b/parsing_cocci/ast0_cocci.ml @@ -384,6 +384,8 @@ and parsed_rule = (rule * Ast.metavar list) * Ast.ruletype | ScriptRule of string * Ast.dependency * (string * Ast.meta_name) list * string + | InitialScriptRule of string * string + | FinalScriptRule of string * string (* --------------------------------------------------------------------- *) diff --git a/parsing_cocci/ast0_cocci.mli b/parsing_cocci/ast0_cocci.mli index bd78144..f6db914 100644 --- a/parsing_cocci/ast0_cocci.mli +++ b/parsing_cocci/ast0_cocci.mli @@ -360,6 +360,8 @@ and parsed_rule = | ScriptRule of string * Ast_cocci.dependency * (string * Ast_cocci.meta_name) list * string + | InitialScriptRule of string * string + | FinalScriptRule of string * string (* --------------------------------------------------------------------- *) diff --git a/parsing_cocci/ast0toast.ml b/parsing_cocci/ast0toast.ml index 33c0349..d8a0ed9 100644 --- a/parsing_cocci/ast0toast.ml +++ b/parsing_cocci/ast0toast.ml @@ -28,6 +28,7 @@ rule_elems, and on subterms if the context is ? also. *) module Ast0 = Ast0_cocci module Ast = Ast_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types module V = Visitor_ast let unitary = Type_cocci.Unitary @@ -163,7 +164,7 @@ let inline_mcodes = (einfo.Ast0.attachable_end,einfo.Ast0.mcode_end) | (Ast.NOTHING,_,_) -> ()) | Ast0.PLUS -> () in - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing @@ -188,28 +189,28 @@ let check_allminus = let expression r k e = match Ast0.unwrap e with Ast0.DisjExpr(starter,expr_list,mids,ender) -> - List.for_all r.V0.combiner_expression expr_list + List.for_all r.VT0.combiner_rec_expression expr_list | _ -> k e in let declaration r k e = match Ast0.unwrap e with Ast0.DisjDecl(starter,decls,mids,ender) -> - List.for_all r.V0.combiner_declaration decls + List.for_all r.VT0.combiner_rec_declaration decls | _ -> k e in let typeC r k e = match Ast0.unwrap e with Ast0.DisjType(starter,decls,mids,ender) -> - List.for_all r.V0.combiner_typeC decls + List.for_all r.VT0.combiner_rec_typeC decls | _ -> k e in let statement r k e = match Ast0.unwrap e with Ast0.Disj(starter,statement_dots_list,mids,ender) -> - List.for_all r.V0.combiner_statement_dots statement_dots_list + List.for_all r.VT0.combiner_rec_statement_dots statement_dots_list | _ -> k e in - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing @@ -434,7 +435,7 @@ and base_typeC t = (typeC ty,mcode lp1,mcode star,mcode rp1, mcode lp2,parameter_list params,mcode rp2) | Ast0.FunctionType(ret,lp,params,rp) -> - let allminus = check_allminus.V0.combiner_typeC t in + let allminus = check_allminus.VT0.combiner_rec_typeC t in Ast.FunctionType (allminus,get_option typeC ret,mcode lp, parameter_list params,mcode rp) @@ -472,7 +473,7 @@ and declaration d = | Ast0.UnInit(stg,ty,id,sem) -> (match Ast0.unwrap ty with Ast0.FunctionType(tyx,lp1,params,rp1) -> - let allminus = check_allminus.V0.combiner_declaration d in + let allminus = check_allminus.VT0.combiner_rec_declaration d in Ast.UnInit(get_option mcode stg, rewrap ty (do_isos (Ast0.get_iso ty)) (Ast.Type @@ -597,7 +598,7 @@ and statement s = Ast0.Decl((_,bef),decl) -> Ast.Atomic(rewrap_rule_elem s (Ast.Decl(convert_mcodekind bef, - check_allminus.V0.combiner_statement s, + check_allminus.VT0.combiner_rec_statement s, declaration decl))) | Ast0.Seq(lbrace,body,rbrace) -> let lbrace = mcode lbrace in @@ -744,7 +745,7 @@ and statement s = let lbrace = mcode lbrace in let (decls,body) = separate_decls seqible body in let rbrace = mcode rbrace in - let allminus = check_allminus.V0.combiner_statement s in + let allminus = check_allminus.VT0.combiner_rec_statement s in Ast.FunDecl(rewrap_rule_elem s (Ast.FunHeader(convert_mcodekind bef, allminus,fi,name,lp,params,rp)), @@ -934,10 +935,10 @@ and top_level t = down to the mcodes. The functions above can only be used when there is no attached + code, eg in + code itself. *) let ast0toast_toplevel x = - inline_mcodes.V0.combiner_top_level x; + inline_mcodes.VT0.combiner_rec_top_level x; top_level x let ast0toast name deps dropped exists x is_exp ruletype = - List.iter inline_mcodes.V0.combiner_top_level x; + List.iter inline_mcodes.VT0.combiner_rec_top_level x; Ast.CocciRule (name,(deps,dropped,exists),List.map top_level x,is_exp,ruletype) diff --git a/parsing_cocci/ast_cocci.ml b/parsing_cocci/ast_cocci.ml index ff69cc6..164be27 100644 --- a/parsing_cocci/ast_cocci.ml +++ b/parsing_cocci/ast_cocci.ml @@ -35,7 +35,7 @@ type 'a wrap = node_line : line; free_vars : meta_name list; (*free vars*) minus_free_vars : meta_name list; (*minus free vars*) - fresh_vars : meta_name list; (*fresh vars*) + fresh_vars : (meta_name * string (*seed*) option) list; (*fresh vars*) inherited : meta_name list; (*inherited vars*) saved_witness : meta_name list; (*witness vars*) bef_aft : dots_bef_aft; @@ -72,8 +72,8 @@ and keep_binding = Type_cocci.keep_binding and multi = bool (*true if a nest is one or more, false if it is zero or more*) and end_info = - meta_name list (*free vars*) * meta_name list (*inherited vars*) * - meta_name list (*witness vars*) * mcodekind + meta_name list (*free vars*) * (meta_name * string option) list (*fresh*) * + meta_name list (*inherited vars*) * mcodekind (* --------------------------------------------------------------------- *) (* Metavariables *) @@ -82,7 +82,7 @@ and arity = UNIQUE | OPT | MULTI | NONE and metavar = MetaIdDecl of arity * meta_name (* name *) - | MetaFreshIdDecl of arity * meta_name (* name *) + | MetaFreshIdDecl of meta_name (* name *) * string option (* seed *) | MetaTypeDecl of arity * meta_name (* name *) | MetaInitDecl of arity * meta_name (* name *) | MetaListlenDecl of meta_name (* name *) @@ -237,7 +237,7 @@ and base_typeC = | StructUnionName of structUnion mcode * ident option (* name *) | StructUnionDef of fullType (* either StructUnionName or metavar *) * string mcode (* { *) * declaration dots * string mcode (* } *) - | TypeName of string mcode + | TypeName of string mcode (* pad: should be 'of ident' ? *) | MetaType of meta_name mcode * keep_binding * inherited @@ -517,6 +517,8 @@ and rulename = | GeneratedRulename of string option * dependency * string list * string list * exists * bool | ScriptRulename of string * dependency + | InitialScriptRulename of string + | FinalScriptRulename of string and ruletype = Normal | Generated @@ -525,6 +527,8 @@ and rule = (dependency * string list (* dropped isos *) * exists) * top_level list * bool list * ruletype | ScriptRule of string * dependency * (string * meta_name) list * string + | InitialScriptRule of string (*language*) * string (*code*) + | FinalScriptRule of string (*language*) * string (*code*) and dependency = Dep of string (* rule applies for the current binding *) @@ -622,7 +626,7 @@ let get_wcfvs (whencode : ('a wrap, 'b wrap) whencode list) = let get_meta_name = function MetaIdDecl(ar,nm) -> nm - | MetaFreshIdDecl(ar,nm) -> nm + | MetaFreshIdDecl(nm,seed) -> nm | MetaTypeDecl(ar,nm) -> nm | MetaInitDecl(ar,nm) -> nm | MetaListlenDecl(nm) -> nm diff --git a/parsing_cocci/ast_cocci.mli b/parsing_cocci/ast_cocci.mli index cb06c36..ce55a57 100644 --- a/parsing_cocci/ast_cocci.mli +++ b/parsing_cocci/ast_cocci.mli @@ -11,7 +11,7 @@ type 'a wrap = node_line : line; free_vars : meta_name list; (*free vars*) minus_free_vars : meta_name list; (*minus free vars*) - fresh_vars : meta_name list; (*fresh vars*) + fresh_vars : (meta_name * string (*seed*) option) list; (*fresh vars*) inherited : meta_name list; (*inherited vars*) saved_witness : meta_name list; (*witness vars*) bef_aft : dots_bef_aft; @@ -47,8 +47,8 @@ and keep_binding = Type_cocci.keep_binding and multi = bool (*true if a nest is one or more, false if it is zero or more*) and end_info = - meta_name list (*free vars*) * meta_name list (*inherited vars*) * - meta_name list (*witness vars*) * mcodekind + meta_name list (*free vars*) * (meta_name * string option) list (*fresh*) * + meta_name list (*inherited vars*) * mcodekind (* --------------------------------------------------------------------- *) (* Metavariables *) @@ -57,7 +57,7 @@ and arity = UNIQUE | OPT | MULTI | NONE and metavar = MetaIdDecl of arity * meta_name (* name *) - | MetaFreshIdDecl of arity * meta_name (* name *) + | MetaFreshIdDecl of meta_name (* name *) * string option (* seed *) | MetaTypeDecl of arity * meta_name (* name *) | MetaInitDecl of arity * meta_name (* name *) | MetaListlenDecl of meta_name (* name *) @@ -480,6 +480,8 @@ and rulename = string list * string list * exists * bool (* true if the whole thing is an expression *) | ScriptRulename of string * dependency + | InitialScriptRulename of string + | FinalScriptRulename of string and ruletype = Normal | Generated @@ -488,6 +490,8 @@ and rule = (dependency * string list (* dropped isos *) * exists) * top_level list * bool list (* true if generates an exp *) * ruletype | ScriptRule of string * dependency * (string * meta_name) list * string + | InitialScriptRule of string * string + | FinalScriptRule of string * string and dependency = Dep of string (* rule applies for the current binding *) @@ -558,7 +562,7 @@ val get_wcfvs : ('a wrap,'b wrap) whencode list -> meta_name list val set_fvs : meta_name list -> 'a wrap -> 'a wrap val get_mfvs : 'a wrap -> meta_name list val set_mfvs : meta_name list -> 'a wrap -> 'a wrap -val get_fresh : 'a wrap -> meta_name list +val get_fresh : 'a wrap -> (meta_name * string option) list val get_inherited : 'a wrap -> meta_name list val get_saved : 'a wrap -> meta_name list val get_dots_bef_aft : statement -> dots_bef_aft @@ -581,12 +585,12 @@ val no_info : info val make_meta_rule_elem : string -> mcodekind -> - (meta_name list * meta_name list * meta_name list) -> + (meta_name list * (meta_name * string option) list * meta_name list) -> rule_elem val make_meta_decl : string -> mcodekind -> - (meta_name list * meta_name list * meta_name list) -> + (meta_name list * (meta_name * string option) list * meta_name list) -> declaration val make_term : 'a -> 'a wrap diff --git a/parsing_cocci/check_meta.ml b/parsing_cocci/check_meta.ml index daa2a2e..c1bf4b9 100644 --- a/parsing_cocci/check_meta.ml +++ b/parsing_cocci/check_meta.ml @@ -28,6 +28,7 @@ fresh are used. What is the issue about error variables? (don't remember) *) module Ast0 = Ast0_cocci module Ast = Ast_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types (* all fresh identifiers *) let fresh_table = (Hashtbl.create(50) : ((string * string), unit) Hashtbl.t) @@ -416,13 +417,13 @@ let positions table rules = let bind x y = () in let donothing r k e = k e in let fn = - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing in - List.iter fn.V0.combiner_top_level rules + List.iter fn.VT0.combiner_rec_top_level rules let dup_positions rules = let mcode x = @@ -441,33 +442,33 @@ let dup_positions rules = match Ast0.unwrap e with Ast0.DisjExpr(_,explist,_,_) -> List.fold_left Common.union_set option_default - (List.map r.V0.combiner_expression explist) + (List.map r.VT0.combiner_rec_expression explist) | _ -> k e in let typeC r k e = (* not sure relevent because "only after iso" *) match Ast0.unwrap e with Ast0.DisjType(_,types,_,_) -> List.fold_left Common.union_set option_default - (List.map r.V0.combiner_typeC types) + (List.map r.VT0.combiner_rec_typeC types) | _ -> k e in let declaration r k e = match Ast0.unwrap e with Ast0.DisjDecl(_,decls,_,_) -> List.fold_left Common.union_set option_default - (List.map r.V0.combiner_declaration decls) + (List.map r.VT0.combiner_rec_declaration decls) | _ -> k e in let statement r k e = match Ast0.unwrap e with Ast0.Disj(_,stmts,_,_) -> List.fold_left Common.union_set option_default - (List.map r.V0.combiner_statement_dots stmts) + (List.map r.VT0.combiner_rec_statement_dots stmts) | _ -> k e in let donothing r k e = k e in let fn = - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing expression typeC donothing donothing declaration statement @@ -476,7 +477,7 @@ let dup_positions rules = let res = List.sort compare (List.fold_left Common.union_set option_default - (List.map fn.V0.combiner_top_level rules)) in + (List.map fn.VT0.combiner_rec_top_level rules)) in let rec loop = function [] | [_] -> () | ((rule,name) as x)::y::_ when x = y -> diff --git a/parsing_cocci/comm_assoc.ml b/parsing_cocci/comm_assoc.ml index 124b8d8..60857d0 100644 --- a/parsing_cocci/comm_assoc.ml +++ b/parsing_cocci/comm_assoc.ml @@ -28,6 +28,7 @@ Nested is not used before this phase. *) module Ast = Ast_cocci module Ast0 = Ast0_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types let comm_assoc = [Ast.Arith(Ast.Plus);Ast.Arith(Ast.Mul);Ast.Arith(Ast.And);Ast.Arith(Ast.Or); @@ -46,8 +47,6 @@ let nopos mc = match Ast0.get_pos mc with Ast0.MetaPos _ -> false | Ast0.NoMetaPos -> true let process_binops rule_name = - let donothing r k e = k e in - let mcode x = x in let expr r k e1 = let e = k e1 in match Ast0.unwrap e with @@ -73,13 +72,9 @@ let process_binops rule_name = e) | _ -> e) | _ -> e in - V0.rebuilder - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - donothing expr donothing donothing donothing donothing donothing - donothing donothing + V0.rebuilder {V0.rebuilder_functions with VT0.rebuilder_exprfn = expr} let comm_assoc rule rule_name dropped_isos = if List.mem "comm_assoc" dropped_isos then rule - else List.map (process_binops rule_name).V0.rebuilder_top_level rule + else List.map (process_binops rule_name).VT0.rebuilder_rec_top_level rule diff --git a/parsing_cocci/context_neg.ml b/parsing_cocci/context_neg.ml index 9341b33..93de14b 100644 --- a/parsing_cocci/context_neg.ml +++ b/parsing_cocci/context_neg.ml @@ -29,6 +29,7 @@ plus subtrees. *) module Ast = Ast_cocci module Ast0 = Ast0_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types module U = Unparse_ast0 (* --------------------------------------------------------------------- *) @@ -143,12 +144,12 @@ let collect_plus_lines top = Ast0.PLUS -> insert info.Ast0.pos_info.Ast0.line_start | _ -> () in let fn = - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing in - fn.V0.combiner_top_level top + fn.VT0.combiner_rec_top_level top (* --------------------------------------------------------------------- *) @@ -330,7 +331,7 @@ let classify is_minus all_marked table code = | Ast0.Estars(dots,whencode) -> k (Ast0.rewrap e (Ast0.Estars(dots,None))) | Ast0.DisjExpr(starter,expr_list,_,ender) -> - disj_cases e starter expr_list r.V0.combiner_expression ender + disj_cases e starter expr_list r.VT0.combiner_rec_expression ender | _ -> k e) in (* not clear why we have the next two cases, since DisjDecl and @@ -339,7 +340,7 @@ let classify is_minus all_marked table code = compute_result Ast0.decl e (match Ast0.unwrap e with Ast0.DisjDecl(starter,decls,_,ender) -> - disj_cases e starter decls r.V0.combiner_declaration ender + disj_cases e starter decls r.VT0.combiner_rec_declaration ender | Ast0.Ddots(dots,whencode) -> k (Ast0.rewrap e (Ast0.Ddots(dots,None))) (* Need special cases for the following so that the type will be @@ -353,14 +354,14 @@ let classify is_minus all_marked table code = reordering their components. *) | Ast0.Init(stg,ty,id,eq,ini,sem) -> bind (match stg with Some stg -> mcode stg | _ -> option_default) - (bind (r.V0.combiner_typeC ty) - (bind (r.V0.combiner_ident id) + (bind (r.VT0.combiner_rec_typeC ty) + (bind (r.VT0.combiner_rec_ident id) (bind (mcode eq) - (bind (r.V0.combiner_initialiser ini) (mcode sem))))) + (bind (r.VT0.combiner_rec_initialiser ini) (mcode sem))))) | Ast0.UnInit(stg,ty,id,sem) -> bind (match stg with Some stg -> mcode stg | _ -> option_default) - (bind (r.V0.combiner_typeC ty) - (bind (r.V0.combiner_ident id) (mcode sem))) + (bind (r.VT0.combiner_rec_typeC ty) + (bind (r.VT0.combiner_rec_ident id) (mcode sem))) | _ -> k e) in let param r k e = @@ -368,14 +369,14 @@ let classify is_minus all_marked table code = (match Ast0.unwrap e with Ast0.Param(ty,Some id) -> (* needed for the same reason as in the Init and UnInit cases *) - bind (r.V0.combiner_typeC ty) (r.V0.combiner_ident id) + bind (r.VT0.combiner_rec_typeC ty) (r.VT0.combiner_rec_ident id) | _ -> k e) in let typeC r k e = compute_result Ast0.typeC e (match Ast0.unwrap e with Ast0.DisjType(starter,types,_,ender) -> - disj_cases e starter types r.V0.combiner_typeC ender + disj_cases e starter types r.VT0.combiner_rec_typeC ender | _ -> k e) in let initialiser r k i = @@ -397,7 +398,7 @@ let classify is_minus all_marked table code = | Ast0.Stars(dots,whencode) -> k (Ast0.rewrap s (Ast0.Stars(dots,[]))) | Ast0.Disj(starter,statement_dots_list,_,ender) -> - disj_cases s starter statement_dots_list r.V0.combiner_statement_dots + disj_cases s starter statement_dots_list r.VT0.combiner_rec_statement_dots ender (* cases for everything with extra mcode *) | Ast0.FunDecl((info,bef),_,_,_,_,_,_,_,_) @@ -416,14 +417,14 @@ let classify is_minus all_marked table code = let do_top builder r k e = compute_result builder e (k e) in let combiner = - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode (do_nothing Ast0.dotsExpr) (do_nothing Ast0.dotsInit) (do_nothing Ast0.dotsParam) (do_nothing Ast0.dotsStmt) (do_nothing Ast0.dotsDecl) (do_nothing Ast0.dotsCase) (do_nothing Ast0.ident) expression typeC initialiser param declaration statement (do_nothing Ast0.case_line) (do_top Ast0.top) in - combiner.V0.combiner_top_level code + combiner.VT0.combiner_rec_top_level code (* --------------------------------------------------------------------- *) (* Traverse the hash tables and find corresponding context nodes that have @@ -753,7 +754,7 @@ let contextify_all = let mcode x = () in let do_nothing r k e = Ast0.set_mcodekind e (default_context()); k e in - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing @@ -762,8 +763,6 @@ let contextify_all = let contextify_whencode = let bind x y = () in let option_default = () in - let mcode x = () in - let do_nothing r k e = k e in let expression r k e = k e; @@ -772,21 +771,21 @@ let contextify_whencode = | Ast0.Edots(_,Some whencode) | Ast0.Ecircles(_,Some whencode) | Ast0.Estars(_,Some whencode) -> - contextify_all.V0.combiner_expression whencode + contextify_all.VT0.combiner_rec_expression whencode | _ -> () in let initialiser r k i = match Ast0.unwrap i with Ast0.Idots(dots,Some whencode) -> - contextify_all.V0.combiner_initialiser whencode + contextify_all.VT0.combiner_rec_initialiser whencode | _ -> k i in let whencode = function - Ast0.WhenNot sd -> contextify_all.V0.combiner_statement_dots sd - | Ast0.WhenAlways s -> contextify_all.V0.combiner_statement s + Ast0.WhenNot sd -> contextify_all.VT0.combiner_rec_statement_dots sd + | Ast0.WhenAlways s -> contextify_all.VT0.combiner_rec_statement s | Ast0.WhenModifier(_) -> () - | Ast0.WhenNotTrue(e) -> contextify_all.V0.combiner_expression e - | Ast0.WhenNotFalse(e) -> contextify_all.V0.combiner_expression e in + | Ast0.WhenNotTrue(e) -> contextify_all.VT0.combiner_rec_expression e + | Ast0.WhenNotFalse(e) -> contextify_all.VT0.combiner_rec_expression e in let statement r k (s : Ast0.statement) = k s; @@ -798,13 +797,11 @@ let contextify_whencode = let combiner = V0.combiner bind option_default - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing - do_nothing - expression - do_nothing initialiser do_nothing do_nothing statement do_nothing - do_nothing in - combiner.V0.combiner_top_level + {V0.combiner_functions with + VT0.combiner_exprfn = expression; + VT0.combiner_initfn = initialiser; + VT0.combiner_stmtfn = statement} in + combiner.VT0.combiner_rec_top_level (* --------------------------------------------------------------------- *) diff --git a/parsing_cocci/data.ml b/parsing_cocci/data.ml index 1a208c9..98ca9fe 100644 --- a/parsing_cocci/data.ml +++ b/parsing_cocci/data.ml @@ -65,6 +65,9 @@ let add_id_meta: (Ast.meta_name -> iconstraints -> Ast0.pure -> unit) ref = ref (fun _ -> failwith "uninitialized add_meta") +let add_fresh_id_meta: (Ast.meta_name -> unit) ref = + ref (fun _ -> failwith "uninitialized add_meta") + let add_type_meta: (Ast.meta_name -> Ast0.pure -> unit) ref = ref (fun _ -> failwith "uninitialized add_meta") diff --git a/parsing_cocci/data.mli b/parsing_cocci/data.mli index 6dcb387..174babc 100644 --- a/parsing_cocci/data.mli +++ b/parsing_cocci/data.mli @@ -34,6 +34,8 @@ val clear_meta: (unit -> unit) ref val add_id_meta: (Ast_cocci.meta_name -> iconstraints -> Ast0_cocci.pure -> unit) ref +val add_fresh_id_meta: (Ast_cocci.meta_name -> unit) ref + val add_type_meta: (Ast_cocci.meta_name -> Ast0_cocci.pure -> unit) ref val add_init_meta: (Ast_cocci.meta_name -> Ast0_cocci.pure -> unit) ref diff --git a/parsing_cocci/disjdistr.ml b/parsing_cocci/disjdistr.ml index 1b693e7..9a033bd 100644 --- a/parsing_cocci/disjdistr.ml +++ b/parsing_cocci/disjdistr.ml @@ -385,7 +385,8 @@ let disj rules = List.map (function (mv,r) -> match r with - Ast.ScriptRule _ -> (mv, r) + Ast.ScriptRule _ + | Ast.InitialScriptRule _ | Ast.FinalScriptRule _ -> (mv, r) | Ast.CocciRule (nm, rule_info, r, isexp, ruletype) -> let res = List.map diff --git a/parsing_cocci/flag_parsing_cocci.ml b/parsing_cocci/flag_parsing_cocci.ml index 371a7f8..84db93b 100644 --- a/parsing_cocci/flag_parsing_cocci.ml +++ b/parsing_cocci/flag_parsing_cocci.ml @@ -27,3 +27,5 @@ let sgrep_mode = ref false (* no longer supported, subsumed by sgrep2 *) let show_SP = ref false let show_iso_failures = ref true + +let iso_limit = ref (None : int option) (*(Some 3)*) diff --git a/parsing_cocci/free_vars.ml b/parsing_cocci/free_vars.ml index f3fbd5f..108d0c9 100644 --- a/parsing_cocci/free_vars.ml +++ b/parsing_cocci/free_vars.ml @@ -514,11 +514,19 @@ let astfvs metavars bound = List.fold_left (function prev -> function - Ast.MetaFreshIdDecl(_,_) as x -> (Ast.get_meta_name x)::prev + Ast.MetaFreshIdDecl(_,seed) as x -> + ((Ast.get_meta_name x),seed)::prev | _ -> prev) [] metavars in - let collect_fresh = List.filter (function x -> List.mem x fresh) in + let collect_fresh l = + List.rev + (List.fold_left + (function prev -> + function x -> + try let v = List.assoc x fresh in (x,v)::prev + with Not_found -> prev) + [] l) in (* cases for the elements of anything *) let astfvrule_elem recursor k re = @@ -642,7 +650,8 @@ let collect_astfvs rules = [] -> [] | (metavars, rule)::rules -> match rule with - Ast.ScriptRule (_,_,_,_) -> + Ast.ScriptRule (_,_,_,_) + | Ast.InitialScriptRule (_,_) | Ast.FinalScriptRule (_,_) -> (* bound stays as is because script rules have no names, so no inheritance is possible *) rule::(loop bound rules) @@ -692,7 +701,8 @@ let get_neg_pos_list (_,rule) used_after_list = "a variable cannot be used both as a position and a constraint"); neg_positions) minirules - | Ast.ScriptRule _ -> [] (*no negated positions*) + | Ast.ScriptRule _ | Ast.InitialScriptRule _ | Ast.FinalScriptRule _ -> + (*no negated positions*) [] (* ---------------------------------------------------------------- *) @@ -719,6 +729,7 @@ let collect_top_level_used_after metavar_rule_list = match r with Ast.ScriptRule (_,_,mv,_) -> List.map (function (_,(r,v)) -> (r,v)) mv + | Ast.InitialScriptRule (_,_) | Ast.FinalScriptRule (_,_) -> [] | Ast.CocciRule (_,_,rule,_,_) -> Common.union_set (nub (collect_all_rule_refs rule)) (collect_in_plus rule) in @@ -765,7 +776,9 @@ let collect_used_after metavar_rule_list = (function (metavars,r) -> function used_after -> match r with - Ast.ScriptRule (_,_,mv,_) -> ([], [used_after]) + Ast.ScriptRule (_,_,_,_) + | Ast.InitialScriptRule (_,_) | Ast.FinalScriptRule (_,_) -> + ([], [used_after]) | Ast.CocciRule (name, rule_info, minirules, _,_) -> collect_local_used_after metavars minirules used_after ) @@ -782,7 +795,8 @@ let free_vars rules = List.map (function (mv, r) -> match r with - Ast.ScriptRule _ -> [] + Ast.ScriptRule _ + | Ast.InitialScriptRule _ | Ast.FinalScriptRule _ -> [] | Ast.CocciRule (_,_,rule,_,_) -> let positions = List.fold_left @@ -796,7 +810,8 @@ let free_vars rules = (function (mv,r) -> function ua -> match r with - Ast.ScriptRule _ -> r + Ast.ScriptRule _ + | Ast.InitialScriptRule _ | Ast.FinalScriptRule _ -> r | Ast.CocciRule (nm, rule_info, r, is_exp,ruletype) -> Ast.CocciRule (nm, rule_info, classify_variables mv r (List.concat ua), diff --git a/parsing_cocci/function_prototypes.ml b/parsing_cocci/function_prototypes.ml index 788c685..95fe86b 100644 --- a/parsing_cocci/function_prototypes.ml +++ b/parsing_cocci/function_prototypes.ml @@ -23,6 +23,7 @@ module Ast0 = Ast0_cocci module Ast = Ast_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types type id = Id of string | Meta of (string * string) @@ -73,7 +74,8 @@ let get_all_functions rule = | _ -> [] in List.map (function (nm,def,vl) -> - (nm,(def,(Iso_pattern.rebuild_mcode None).V0.rebuilder_statement vl))) + (nm, + (def,(Iso_pattern.rebuild_mcode None).VT0.rebuilder_rec_statement vl))) res (* --------------------------------------------------------------------- *) @@ -156,7 +158,7 @@ and strip = Ast0.MetaParamList(nm,lenname,Ast0.Pure) | e -> e)) in - V0.rebuilder + V0.flat_rebuilder mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing ident donothing typeC donothing param donothing donothing @@ -165,8 +167,8 @@ and strip = and changed_proto = function (mname,mdef,mproto,None) -> true | (mname,mdef,mproto,Some pproto) -> - not ((strip.V0.rebuilder_statement mproto) = - (strip.V0.rebuilder_statement pproto)) + not ((strip.VT0.rebuilder_rec_statement mproto) = + (strip.VT0.rebuilder_rec_statement pproto)) (* --------------------------------------------------------------------- *) (* make rules *) @@ -180,7 +182,7 @@ let rec drop_param_name p = | p -> p) let drop_names dec = - let dec = (Iso_pattern.rebuild_mcode None).V0.rebuilder_statement dec in + let dec = (Iso_pattern.rebuild_mcode None).VT0.rebuilder_rec_statement dec in match Ast0.unwrap dec with Ast0.Decl(info,uninit) -> (match Ast0.unwrap uninit with diff --git a/parsing_cocci/get_constants.ml b/parsing_cocci/get_constants.ml index e191e32..ac9e629 100644 --- a/parsing_cocci/get_constants.ml +++ b/parsing_cocci/get_constants.ml @@ -301,7 +301,9 @@ let get_constants rules = (function (rest_info,in_plus) -> function r -> match r with - Ast.ScriptRule (_,mv,deps,_) -> (rest_info, in_plus) + Ast.ScriptRule (_,_,_,_) + | Ast.InitialScriptRule (_,_) | Ast.FinalScriptRule (_,_) -> + (rest_info, in_plus) | Ast.CocciRule (nm, (dep,_,_), cur, _, _) -> let (cur_info,cur_plus) = rule_fn cur in_plus in let cur_info = diff --git a/parsing_cocci/get_constants2.ml b/parsing_cocci/get_constants2.ml index 8ca4e52..9c9f220 100644 --- a/parsing_cocci/get_constants2.ml +++ b/parsing_cocci/get_constants2.ml @@ -474,6 +474,8 @@ let get_constants rules neg_pos_vars = False -> (rest_info, in_plus, env, locals) | dependencies -> (build_or dependencies rest_info, in_plus, env, locals)) + | (Ast.InitialScriptRule (_,_),_) + | (Ast.FinalScriptRule (_,_),_) -> (rest_info,in_plus,env,locals) | (Ast.CocciRule (nm,(dep,_,_),cur,_,_),neg_pos_vars) -> let (cur_info,cur_plus) = rule_fn cur in_plus ((nm,True)::env) neg_pos_vars in diff --git a/parsing_cocci/insert_plus.ml b/parsing_cocci/insert_plus.ml index ff3c59a..a6ddbfc 100644 --- a/parsing_cocci/insert_plus.ml +++ b/parsing_cocci/insert_plus.ml @@ -32,6 +32,7 @@ tokens, and then merge them. *) module Ast = Ast_cocci module Ast0 = Ast0_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types module CN = Context_neg let empty_isos = ref false @@ -88,7 +89,7 @@ it *) let topfn r k e = Ast0.TopTag(e) :: (k e) in let res = - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode (donothing Ast0.dotsExpr) (donothing Ast0.dotsInit) (donothing Ast0.dotsParam) (donothing Ast0.dotsStmt) @@ -96,7 +97,7 @@ it *) (donothing Ast0.ident) expression (donothing Ast0.typeC) initialiser (donothing Ast0.param) (donothing Ast0.decl) statement (donothing Ast0.case_line) topfn in - res.V0.combiner_top_level e + res.VT0.combiner_rec_top_level e (* --------------------------------------------------------------------- *) (* --------------------------------------------------------------------- *) @@ -188,12 +189,12 @@ bind to that; not good for isomorphisms *) | Ast0.CIRCLES(l) -> multibind (List.map f l) | Ast0.STARS(l) -> multibind (List.map f l) in - let edots r k d = dots r.V0.combiner_expression k d in - let idots r k d = dots r.V0.combiner_initialiser k d in - let pdots r k d = dots r.V0.combiner_parameter k d in - let sdots r k d = dots r.V0.combiner_statement k d in - let ddots r k d = dots r.V0.combiner_declaration k d in - let cdots r k d = dots r.V0.combiner_case_line k d in + let edots r k d = dots r.VT0.combiner_rec_expression k d in + let idots r k d = dots r.VT0.combiner_rec_initialiser k d in + let pdots r k d = dots r.VT0.combiner_rec_parameter k d in + let sdots r k d = dots r.VT0.combiner_rec_statement k d in + let ddots r k d = dots r.VT0.combiner_rec_declaration k d in + let cdots r k d = dots r.VT0.combiner_rec_case_line k d in (* a case for everything that has a Opt *) @@ -237,45 +238,46 @@ bind to that; not good for isomorphisms *) (Toplevel,info,bef)::(k s) | Ast0.Decl((info,bef),decl) -> (Decl,info,bef)::(k s) | Ast0.Nest(starter,stmt_dots,ender,whencode,multi) -> - mcode starter @ r.V0.combiner_statement_dots stmt_dots @ mcode ender + mcode starter @ r.VT0.combiner_rec_statement_dots stmt_dots @ + mcode ender | Ast0.Dots(d,whencode) | Ast0.Circles(d,whencode) | Ast0.Stars(d,whencode) -> mcode d (* ignore whencode *) | Ast0.OptStm s | Ast0.UniqueStm s -> (* put the + code on the thing, not on the opt *) - r.V0.combiner_statement s + r.VT0.combiner_rec_statement s | _ -> do_nothing r k s in let expression r k e = match Ast0.unwrap e with Ast0.NestExpr(starter,expr_dots,ender,whencode,multi) -> mcode starter @ - r.V0.combiner_expression_dots expr_dots @ mcode ender + r.VT0.combiner_rec_expression_dots expr_dots @ mcode ender | Ast0.Edots(d,whencode) | Ast0.Ecircles(d,whencode) | Ast0.Estars(d,whencode) -> mcode d (* ignore whencode *) | Ast0.OptExp e | Ast0.UniqueExp e -> (* put the + code on the thing, not on the opt *) - r.V0.combiner_expression e + r.VT0.combiner_rec_expression e | _ -> do_nothing r k e in let ident r k e = match Ast0.unwrap e with Ast0.OptIdent i | Ast0.UniqueIdent i -> (* put the + code on the thing, not on the opt *) - r.V0.combiner_ident i + r.VT0.combiner_rec_ident i | _ -> do_nothing r k e in let typeC r k e = match Ast0.unwrap e with Ast0.OptType t | Ast0.UniqueType t -> (* put the + code on the thing, not on the opt *) - r.V0.combiner_typeC t + r.VT0.combiner_rec_typeC t | _ -> do_nothing r k e in let decl r k e = match Ast0.unwrap e with Ast0.OptDecl d | Ast0.UniqueDecl d -> (* put the + code on the thing, not on the opt *) - r.V0.combiner_declaration d + r.VT0.combiner_rec_declaration d | _ -> do_nothing r k e in let initialiser r k e = @@ -283,26 +285,26 @@ bind to that; not good for isomorphisms *) Ast0.Idots(d,whencode) -> mcode d (* ignore whencode *) | Ast0.OptIni i | Ast0.UniqueIni i -> (* put the + code on the thing, not on the opt *) - r.V0.combiner_initialiser i + r.VT0.combiner_rec_initialiser i | _ -> do_nothing r k e in let param r k e = match Ast0.unwrap e with Ast0.OptParam p | Ast0.UniqueParam p -> (* put the + code on the thing, not on the opt *) - r.V0.combiner_parameter p + r.VT0.combiner_rec_parameter p | _ -> do_nothing r k e in let case_line r k e = match Ast0.unwrap e with Ast0.OptCase c -> (* put the + code on the thing, not on the opt *) - r.V0.combiner_case_line c + r.VT0.combiner_rec_case_line c | _ -> do_nothing r k e in let do_top r k (e: Ast0.top_level) = k e in - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode edots idots pdots sdots ddots cdots ident expression typeC initialiser param decl statement case_line do_top @@ -315,51 +317,51 @@ let call_collect_minus context_nodes : match e with Ast0.DotsExprTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_expression_dots e) + (collect_minus_join_points e).VT0.combiner_rec_expression_dots e) | Ast0.DotsInitTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_initialiser_list e) + (collect_minus_join_points e).VT0.combiner_rec_initialiser_list e) | Ast0.DotsParamTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_parameter_list e) + (collect_minus_join_points e).VT0.combiner_rec_parameter_list e) | Ast0.DotsStmtTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_statement_dots e) + (collect_minus_join_points e).VT0.combiner_rec_statement_dots e) | Ast0.DotsDeclTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_declaration_dots e) + (collect_minus_join_points e).VT0.combiner_rec_declaration_dots e) | Ast0.DotsCaseTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_case_line_dots e) + (collect_minus_join_points e).VT0.combiner_rec_case_line_dots e) | Ast0.IdentTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_ident e) + (collect_minus_join_points e).VT0.combiner_rec_ident e) | Ast0.ExprTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_expression e) + (collect_minus_join_points e).VT0.combiner_rec_expression e) | Ast0.ArgExprTag(e) | Ast0.TestExprTag(e) -> failwith "not possible - iso only" | Ast0.TypeCTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_typeC e) + (collect_minus_join_points e).VT0.combiner_rec_typeC e) | Ast0.ParamTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_parameter e) + (collect_minus_join_points e).VT0.combiner_rec_parameter e) | Ast0.InitTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_initialiser e) + (collect_minus_join_points e).VT0.combiner_rec_initialiser e) | Ast0.DeclTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_declaration e) + (collect_minus_join_points e).VT0.combiner_rec_declaration e) | Ast0.StmtTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_statement e) + (collect_minus_join_points e).VT0.combiner_rec_statement e) | Ast0.CaseLineTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_case_line e) + (collect_minus_join_points e).VT0.combiner_rec_case_line e) | Ast0.TopTag(e) -> (Ast0.get_index e, - (collect_minus_join_points e).V0.combiner_top_level e) + (collect_minus_join_points e).VT0.combiner_rec_top_level e) | Ast0.IsoWhenTag(_) -> failwith "only within iso phase" | Ast0.IsoWhenTTag(_) -> failwith "only within iso phase" | Ast0.IsoWhenFTag(_) -> failwith "only within iso phase" @@ -494,10 +496,10 @@ let collect_plus_nodes root = (* case for things with bef aft *) let stmt r k e = match Ast0.unwrap e with - Ast0.Exp(exp) -> r.V0.combiner_expression exp - | Ast0.TopExp(exp) -> r.V0.combiner_expression exp - | Ast0.Ty(ty) -> r.V0.combiner_typeC ty - | Ast0.TopInit(init) -> r.V0.combiner_initialiser init + Ast0.Exp(exp) -> r.VT0.combiner_rec_expression exp + | Ast0.TopExp(exp) -> r.VT0.combiner_rec_expression exp + | Ast0.Ty(ty) -> r.VT0.combiner_rec_typeC ty + | Ast0.TopInit(init) -> r.VT0.combiner_rec_initialiser init | Ast0.Decl(bef,decl) -> (info bef) @ (do_nothing mk_statement r k e) | Ast0.FunDecl(bef,fi,name,lp,params,rp,lbrace,body,rbrace) -> @@ -519,18 +521,18 @@ let collect_plus_nodes root = let stmt_dots r k e = match Ast0.unwrap e with Ast0.DOTS([s]) | Ast0.CIRCLES([s]) | Ast0.STARS([s]) -> - r.V0.combiner_statement s + r.VT0.combiner_rec_statement s | _ -> do_nothing mk_stmtdots r k e in let toplevel r k e = match Ast0.unwrap e with - Ast0.DECL(s) -> r.V0.combiner_statement s - | Ast0.CODE(sdots) -> r.V0.combiner_statement_dots sdots + Ast0.DECL(s) -> r.VT0.combiner_rec_statement s + | Ast0.CODE(sdots) -> r.VT0.combiner_rec_statement_dots sdots | _ -> do_nothing mk_code r k e in let initdots r k e = k e in - V0.combiner bind option_default + V0.flat_combiner bind option_default (imcode mk_meta) (imcode mk_token) (mcode mk_constant) (mcode mk_assignOp) (mcode mk_fixOp) (mcode mk_unaryOp) (mcode mk_binaryOp) (mcode mk_const_vol) @@ -551,51 +553,51 @@ let call_collect_plus context_nodes : match e with Ast0.DotsExprTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_expression_dots e) + (collect_plus_nodes e).VT0.combiner_rec_expression_dots e) | Ast0.DotsInitTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_initialiser_list e) + (collect_plus_nodes e).VT0.combiner_rec_initialiser_list e) | Ast0.DotsParamTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_parameter_list e) + (collect_plus_nodes e).VT0.combiner_rec_parameter_list e) | Ast0.DotsStmtTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_statement_dots e) + (collect_plus_nodes e).VT0.combiner_rec_statement_dots e) | Ast0.DotsDeclTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_declaration_dots e) + (collect_plus_nodes e).VT0.combiner_rec_declaration_dots e) | Ast0.DotsCaseTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_case_line_dots e) + (collect_plus_nodes e).VT0.combiner_rec_case_line_dots e) | Ast0.IdentTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_ident e) + (collect_plus_nodes e).VT0.combiner_rec_ident e) | Ast0.ExprTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_expression e) + (collect_plus_nodes e).VT0.combiner_rec_expression e) | Ast0.ArgExprTag(_) | Ast0.TestExprTag(_) -> failwith "not possible - iso only" | Ast0.TypeCTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_typeC e) + (collect_plus_nodes e).VT0.combiner_rec_typeC e) | Ast0.InitTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_initialiser e) + (collect_plus_nodes e).VT0.combiner_rec_initialiser e) | Ast0.ParamTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_parameter e) + (collect_plus_nodes e).VT0.combiner_rec_parameter e) | Ast0.DeclTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_declaration e) + (collect_plus_nodes e).VT0.combiner_rec_declaration e) | Ast0.StmtTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_statement e) + (collect_plus_nodes e).VT0.combiner_rec_statement e) | Ast0.CaseLineTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_case_line e) + (collect_plus_nodes e).VT0.combiner_rec_case_line e) | Ast0.TopTag(e) -> (Ast0.get_index e, - (collect_plus_nodes e).V0.combiner_top_level e) + (collect_plus_nodes e).VT0.combiner_rec_top_level e) | Ast0.IsoWhenTag(_) -> failwith "only within iso phase" | Ast0.IsoWhenTTag(_) -> failwith "only within iso phase" | Ast0.IsoWhenFTag(_) -> failwith "only within iso phase" @@ -1016,12 +1018,12 @@ let reevaluate_contextness = | _ -> donothing r k e in let res = - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing stmt donothing donothing in - res.V0.combiner_top_level + res.VT0.combiner_rec_top_level (* --------------------------------------------------------------------- *) (* --------------------------------------------------------------------- *) diff --git a/parsing_cocci/iso_compile.ml b/parsing_cocci/iso_compile.ml index f9835c6..a04141b 100644 --- a/parsing_cocci/iso_compile.ml +++ b/parsing_cocci/iso_compile.ml @@ -21,6 +21,7 @@ module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types module Ast0 = Ast0_cocci module Ast = Ast_cocci @@ -38,7 +39,7 @@ let sequence_tokens = let donothing r k e = k e in let bind x y = x @ y in let option_default = [] in - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing donothing @@ -100,5 +101,5 @@ let process_info l = let process (metavars,alts,name) = let toks = - List.map (List.map sequence_tokens.V0.combiner_anything) alts in + List.map (List.map sequence_tokens.VT0.combiner_rec_anything) alts in process_info toks diff --git a/parsing_cocci/iso_pattern.ml b/parsing_cocci/iso_pattern.ml index f4036ee..46e77e2 100644 --- a/parsing_cocci/iso_pattern.ml +++ b/parsing_cocci/iso_pattern.ml @@ -33,6 +33,7 @@ either - or + *) module Ast = Ast_cocci module Ast0 = Ast0_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types let current_rule = ref "" @@ -49,7 +50,7 @@ let strip_info = {(Ast0.wrap (Ast0.unwrap x)) with Ast0.mcodekind = ref Ast0.PLUS; Ast0.true_if_test = x.Ast0.true_if_test} in - V0.rebuilder + V0.flat_rebuilder mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing @@ -63,42 +64,42 @@ let anything_equal = function | (Ast0.DotsParamTag(d1),Ast0.DotsParamTag(d2)) -> failwith "not a possible variable binding" | (Ast0.DotsStmtTag(d1),Ast0.DotsStmtTag(d2)) -> - (strip_info.V0.rebuilder_statement_dots d1) = - (strip_info.V0.rebuilder_statement_dots d2) + (strip_info.VT0.rebuilder_rec_statement_dots d1) = + (strip_info.VT0.rebuilder_rec_statement_dots d2) | (Ast0.DotsDeclTag(d1),Ast0.DotsDeclTag(d2)) -> failwith "not a possible variable binding" | (Ast0.DotsCaseTag(d1),Ast0.DotsCaseTag(d2)) -> failwith "not a possible variable binding" | (Ast0.IdentTag(d1),Ast0.IdentTag(d2)) -> - (strip_info.V0.rebuilder_ident d1) = (strip_info.V0.rebuilder_ident d2) + (strip_info.VT0.rebuilder_rec_ident d1) = (strip_info.VT0.rebuilder_rec_ident d2) | (Ast0.ExprTag(d1),Ast0.ExprTag(d2)) -> - (strip_info.V0.rebuilder_expression d1) = - (strip_info.V0.rebuilder_expression d2) + (strip_info.VT0.rebuilder_rec_expression d1) = + (strip_info.VT0.rebuilder_rec_expression d2) | (Ast0.ArgExprTag(_),_) | (_,Ast0.ArgExprTag(_)) -> failwith "not possible - only in isos1" | (Ast0.TestExprTag(_),_) | (_,Ast0.TestExprTag(_)) -> failwith "not possible - only in isos1" | (Ast0.TypeCTag(d1),Ast0.TypeCTag(d2)) -> - (strip_info.V0.rebuilder_typeC d1) = - (strip_info.V0.rebuilder_typeC d2) + (strip_info.VT0.rebuilder_rec_typeC d1) = + (strip_info.VT0.rebuilder_rec_typeC d2) | (Ast0.InitTag(d1),Ast0.InitTag(d2)) -> - (strip_info.V0.rebuilder_initialiser d1) = - (strip_info.V0.rebuilder_initialiser d2) + (strip_info.VT0.rebuilder_rec_initialiser d1) = + (strip_info.VT0.rebuilder_rec_initialiser d2) | (Ast0.ParamTag(d1),Ast0.ParamTag(d2)) -> - (strip_info.V0.rebuilder_parameter d1) = - (strip_info.V0.rebuilder_parameter d2) + (strip_info.VT0.rebuilder_rec_parameter d1) = + (strip_info.VT0.rebuilder_rec_parameter d2) | (Ast0.DeclTag(d1),Ast0.DeclTag(d2)) -> - (strip_info.V0.rebuilder_declaration d1) = - (strip_info.V0.rebuilder_declaration d2) + (strip_info.VT0.rebuilder_rec_declaration d1) = + (strip_info.VT0.rebuilder_rec_declaration d2) | (Ast0.StmtTag(d1),Ast0.StmtTag(d2)) -> - (strip_info.V0.rebuilder_statement d1) = - (strip_info.V0.rebuilder_statement d2) + (strip_info.VT0.rebuilder_rec_statement d1) = + (strip_info.VT0.rebuilder_rec_statement d2) | (Ast0.CaseLineTag(d1),Ast0.CaseLineTag(d2)) -> - (strip_info.V0.rebuilder_case_line d1) = - (strip_info.V0.rebuilder_case_line d2) + (strip_info.VT0.rebuilder_rec_case_line d1) = + (strip_info.VT0.rebuilder_rec_case_line d2) | (Ast0.TopTag(d1),Ast0.TopTag(d2)) -> - (strip_info.V0.rebuilder_top_level d1) = - (strip_info.V0.rebuilder_top_level d2) + (strip_info.VT0.rebuilder_rec_top_level d1) = + (strip_info.VT0.rebuilder_rec_top_level d2) | (Ast0.IsoWhenTTag(_),_) | (_,Ast0.IsoWhenTTag(_)) -> failwith "only for isos within iso phase" | (Ast0.IsoWhenFTag(_),_) | (_,Ast0.IsoWhenFTag(_)) -> @@ -405,7 +406,7 @@ let match_maker checks_needed context_required whencode_allowed = Ast0.MetaStmt(name,pure) | Ast0.MetaStmtList(name,pure) -> pure | _ -> Ast0.Impure) in - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing ident expression typeC init param donothing stmt donothing @@ -457,7 +458,7 @@ let match_maker checks_needed context_required whencode_allowed = match Ast0.unwrap sl with Ast0.MetaStmtList(name,pure) -> add_pure_list_binding name pure - pure_sp_code.V0.combiner_statement + pure_sp_code.VT0.combiner_rec_statement (function lst -> Ast0.StmtTag(List.hd lst)) (function lst -> Ast0.DotsStmtTag(build_dots builder lst)) lst @@ -468,7 +469,7 @@ let match_maker checks_needed context_required whencode_allowed = let rec match_ident pattern id = match Ast0.unwrap pattern with Ast0.MetaId(name,_,pure) -> - (add_pure_binding name pure pure_sp_code.V0.combiner_ident + (add_pure_binding name pure pure_sp_code.VT0.combiner_rec_ident (function id -> Ast0.IdentTag id) id) | Ast0.MetaFunc(name,_,pure) -> failwith "metafunc not supported" | Ast0.MetaLocalFunc(name,_,pure) -> failwith "metalocalfunc not supported" @@ -537,7 +538,7 @@ let match_maker checks_needed context_required whencode_allowed = let tyname = Ast0.rewrap_mcode name tyname in conjunct_bindings (add_pure_binding name pure - pure_sp_code.V0.combiner_expression + pure_sp_code.VT0.combiner_rec_expression (function expr -> Ast0.ExprTag expr) expr) (function bindings -> @@ -586,12 +587,12 @@ let match_maker checks_needed context_required whencode_allowed = if List.exists (function t -> Type_cocci.compatible t expty) ts then add_pure_binding name pure - pure_sp_code.V0.combiner_expression + pure_sp_code.VT0.combiner_rec_expression (function expr -> Ast0.ExprTag expr) expr else return false | None -> - add_pure_binding name pure pure_sp_code.V0.combiner_expression + add_pure_binding name pure pure_sp_code.VT0.combiner_rec_expression (function expr -> Ast0.ExprTag expr) expr else return false @@ -715,7 +716,7 @@ let match_maker checks_needed context_required whencode_allowed = (match Ast0.unwrap t with Ast0.FunctionType(tya,lp1a,paramsa,rp1a) -> return false | _ -> - add_pure_binding name pure pure_sp_code.V0.combiner_typeC + add_pure_binding name pure pure_sp_code.VT0.combiner_rec_typeC (function ty -> Ast0.TypeCTag ty) t) | up -> @@ -851,7 +852,7 @@ let match_maker checks_needed context_required whencode_allowed = and match_init pattern i = match Ast0.unwrap pattern with Ast0.MetaInit(name,pure) -> - add_pure_binding name pure pure_sp_code.V0.combiner_initialiser + add_pure_binding name pure pure_sp_code.VT0.combiner_rec_initialiser (function ini -> Ast0.InitTag ini) i | up -> @@ -919,7 +920,7 @@ let match_maker checks_needed context_required whencode_allowed = and match_param pattern p = match Ast0.unwrap pattern with Ast0.MetaParam(name,pure) -> - add_pure_binding name pure pure_sp_code.V0.combiner_parameter + add_pure_binding name pure pure_sp_code.VT0.combiner_rec_parameter (function p -> Ast0.ParamTag p) p | Ast0.MetaParamList(name,_,pure) -> failwith "metaparamlist not supported" @@ -949,7 +950,7 @@ let match_maker checks_needed context_required whencode_allowed = Ast0.Dots(_,_) | Ast0.Circles(_,_) | Ast0.Stars(_,_) -> return false (* ... is not a single statement *) | _ -> - add_pure_binding name pure pure_sp_code.V0.combiner_statement + add_pure_binding name pure pure_sp_code.VT0.combiner_rec_statement (function ty -> Ast0.StmtTag ty) s) | Ast0.MetaStmtList(name,pure) -> failwith "metastmtlist not supported" @@ -1241,7 +1242,7 @@ let make_minus = update_mc mcodekind e; Ast0.rewrap e (Ast0.NestExpr(mcode starter, - r.V0.rebuilder_expression_dots expr_dots, + r.VT0.rebuilder_rec_expression_dots expr_dots, mcode ender,whencode,multi)) | _ -> donothing r k e in @@ -1266,8 +1267,9 @@ let make_minus = | Ast0.Nest(starter,stmt_dots,ender,whencode,multi) -> update_mc mcodekind e; Ast0.rewrap e - (Ast0.Nest(mcode starter,r.V0.rebuilder_statement_dots stmt_dots, - mcode ender,whencode,multi)) + (Ast0.Nest + (mcode starter,r.VT0.rebuilder_rec_statement_dots stmt_dots, + mcode ender,whencode,multi)) | _ -> donothing r k e in let initialiser r k e = @@ -1304,7 +1306,7 @@ let make_minus = info.Ast0.pos_info.Ast0.line_start (Dumper.dump e))) | _ -> donothing r k e in - V0.rebuilder + V0.flat_rebuilder mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode dots dots dots dots dots dots donothing expression donothing initialiser donothing declaration @@ -1388,11 +1390,11 @@ let rebuild_mcode start_line = (match Ast0.get_dots_bef_aft res with Ast0.NoDots -> Ast0.NoDots | Ast0.AddingBetweenDots s -> - Ast0.AddingBetweenDots(r.V0.rebuilder_statement s) + Ast0.AddingBetweenDots(r.VT0.rebuilder_rec_statement s) | Ast0.DroppingBetweenDots s -> - Ast0.DroppingBetweenDots(r.V0.rebuilder_statement s)) in + Ast0.DroppingBetweenDots(r.VT0.rebuilder_rec_statement s)) in - V0.rebuilder + V0.flat_rebuilder mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing @@ -1405,50 +1407,35 @@ let rebuild_mcode start_line = aren't allowed in isomorphisms for the moment. *) let count_edots = - let mcode x = 0 in let option_default = 0 in let bind x y = x + y in - let donothing r k e = k e in let exprfn r k e = match Ast0.unwrap e with Ast0.Edots(_,_) | Ast0.Ecircles(_,_) | Ast0.Estars(_,_) -> 1 | _ -> 0 in V0.combiner bind option_default - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - donothing exprfn donothing donothing donothing donothing donothing - donothing donothing + {V0.combiner_functions with VT0.combiner_exprfn = exprfn} let count_idots = - let mcode x = 0 in let option_default = 0 in let bind x y = x + y in - let donothing r k e = k e in let initfn r k e = match Ast0.unwrap e with Ast0.Idots(_,_) -> 1 | _ -> 0 in V0.combiner bind option_default - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - donothing donothing donothing initfn donothing donothing donothing - donothing donothing + {V0.combiner_functions with VT0.combiner_initfn = initfn} let count_dots = - let mcode x = 0 in let option_default = 0 in let bind x y = x + y in - let donothing r k e = k e in let stmtfn r k e = match Ast0.unwrap e with Ast0.Dots(_,_) | Ast0.Circles(_,_) | Ast0.Stars(_,_) -> 1 | _ -> 0 in V0.combiner bind option_default - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - donothing donothing donothing donothing donothing donothing stmtfn - donothing donothing + {V0.combiner_functions with VT0.combiner_stmtfn = stmtfn} (* --------------------------------------------------------------------- *) @@ -1478,7 +1465,7 @@ let instantiate bindings mv_bindings = let e = k e in match Ast0.unwrap e with Ast0.MetaId(name,constraints,pure) -> - (rebuild_mcode None).V0.rebuilder_ident + (rebuild_mcode None).VT0.rebuilder_rec_ident (match lookup name bindings mv_bindings with Common.Left(Ast0.IdentTag(id)) -> id | Common.Left(_) -> failwith "not possible 1" @@ -1506,8 +1493,8 @@ let instantiate bindings mv_bindings = | Common.Left(_) -> failwith "not possible 1" | Common.Right(new_mv) -> failwith "MetaExprList in SP not supported"*) - | _ -> [r.V0.rebuilder_expression x]) - | x::xs -> (r.V0.rebuilder_expression x)::(elist r same_dots xs) in + | _ -> [r.VT0.rebuilder_rec_expression x]) + | x::xs -> (r.VT0.rebuilder_rec_expression x)::(elist r same_dots xs) in let rec plist r same_dots = function [] -> [] @@ -1524,8 +1511,8 @@ let instantiate bindings mv_bindings = | Common.Left(_) -> failwith "not possible 1" | Common.Right(new_mv) -> failwith "MetaExprList in SP not supported"*) - | _ -> [r.V0.rebuilder_parameter x]) - | x::xs -> (r.V0.rebuilder_parameter x)::(plist r same_dots xs) in + | _ -> [r.VT0.rebuilder_rec_parameter x]) + | x::xs -> (r.VT0.rebuilder_rec_parameter x)::(plist r same_dots xs) in let rec slist r same_dots = function [] -> [] @@ -1541,8 +1528,8 @@ let instantiate bindings mv_bindings = | Common.Left(_) -> failwith "not possible 1" | Common.Right(new_mv) -> failwith "MetaExprList in SP not supported") - | _ -> [r.V0.rebuilder_statement x]) - | x::xs -> (r.V0.rebuilder_statement x)::(slist r same_dots xs) in + | _ -> [r.VT0.rebuilder_rec_statement x]) + | x::xs -> (r.VT0.rebuilder_rec_statement x)::(slist r same_dots xs) in let same_dots d = match Ast0.unwrap d with Ast0.DOTS(l) -> Some l |_ -> None in @@ -1563,7 +1550,7 @@ let instantiate bindings mv_bindings = let e1 = match Ast0.unwrap e with Ast0.MetaExpr(name,constraints,x,form,pure) -> - (rebuild_mcode None).V0.rebuilder_expression + (rebuild_mcode None).VT0.rebuilder_rec_expression (match lookup name bindings mv_bindings with Common.Left(Ast0.ExprTag(exp)) -> exp | Common.Left(_) -> failwith "not possible 1" @@ -1699,7 +1686,7 @@ let instantiate bindings mv_bindings = let e = k e in match Ast0.unwrap e with Ast0.MetaType(name,pure) -> - (rebuild_mcode None).V0.rebuilder_typeC + (rebuild_mcode None).VT0.rebuilder_rec_typeC (match lookup name bindings mv_bindings with Common.Left(Ast0.TypeCTag(ty)) -> ty | Common.Left(_) -> failwith "not possible 1" @@ -1712,7 +1699,7 @@ let instantiate bindings mv_bindings = let e = k e in match Ast0.unwrap e with Ast0.MetaInit(name,pure) -> - (rebuild_mcode None).V0.rebuilder_initialiser + (rebuild_mcode None).VT0.rebuilder_rec_initialiser (match lookup name bindings mv_bindings with Common.Left(Ast0.InitTag(ty)) -> ty | Common.Left(_) -> failwith "not possible 1" @@ -1736,7 +1723,7 @@ let instantiate bindings mv_bindings = let e = k e in match Ast0.unwrap e with Ast0.MetaParam(name,pure) -> - (rebuild_mcode None).V0.rebuilder_parameter + (rebuild_mcode None).VT0.rebuilder_rec_parameter (match lookup name bindings mv_bindings with Common.Left(Ast0.ParamTag(param)) -> param | Common.Left(_) -> failwith "not possible 1" @@ -1760,7 +1747,7 @@ let instantiate bindings mv_bindings = let e = k e in match Ast0.unwrap e with Ast0.MetaStmt(name,pure) -> - (rebuild_mcode None).V0.rebuilder_statement + (rebuild_mcode None).VT0.rebuilder_rec_statement (match lookup name bindings mv_bindings with Common.Left(Ast0.StmtTag(stm)) -> stm | Common.Left(_) -> failwith "not possible 1" @@ -1788,7 +1775,7 @@ let instantiate bindings mv_bindings = (List.filter (function (x,v) -> x = (dot_term d)) bindings))) | _ -> e in - V0.rebuilder + V0.flat_rebuilder mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode (dots elist) donothing (dots plist) (dots slist) donothing donothing identfn exprfn tyfn initfn paramfn declfn stmtfn donothing donothing @@ -1933,8 +1920,8 @@ let new_mv (_,s) = let get_name = function Ast.MetaIdDecl(ar,nm) -> (nm,function nm -> Ast.MetaIdDecl(ar,nm)) - | Ast.MetaFreshIdDecl(ar,nm) -> - (nm,function nm -> Ast.MetaFreshIdDecl(ar,nm)) + | Ast.MetaFreshIdDecl(nm,seed) -> + (nm,function nm -> Ast.MetaFreshIdDecl(nm,seed)) | Ast.MetaTypeDecl(ar,nm) -> (nm,function nm -> Ast.MetaTypeDecl(ar,nm)) | Ast.MetaInitDecl(ar,nm) -> @@ -2006,7 +1993,7 @@ let mkdisj matcher metavars alts e instantiater mkiso disj_maker minusify (extra_plus e (instantiater bindings mv_bindings (rebuild_mcodes a)))) - (Common.union_set [(name,mkiso a)] (Ast0.get_iso e))) + ((name,mkiso a)::(Ast0.get_iso e))) (* keep count, not U *) bindings)) alts) in let rec inner_loop all_alts prev_ecount prev_icount prev_dcount = function @@ -2050,15 +2037,16 @@ let mkdisj matcher metavars alts e instantiater mkiso disj_maker minusify (new_metavars, call_instantiate bindings mv_bindings all_alts))) in let rec outer_loop prev_ecount prev_icount prev_dcount = function - [] | [[_]] (*only one alternative*) -> ([],e) (* nothing matched *) + [] | [[_]] (*only one alternative*) -> (0,[],e) (* nothing matched *) | (alts::rest) as all_alts -> match inner_loop all_alts prev_ecount prev_icount prev_dcount alts with Common.Left(prev_ecount, prev_icount, prev_dcount) -> outer_loop prev_ecount prev_icount prev_dcount rest | Common.Right (new_metavars,res) -> - (new_metavars, + (1,new_metavars, copy_minus printer minusify e (disj_maker res)) in - outer_loop 0 0 0 alts + let (count,metavars,e) = outer_loop 0 0 0 alts in + (count, metavars, e) (* no one should ever look at the information stored in these mcodes *) let disj_starter lst = @@ -2139,19 +2127,19 @@ let transform_type (metavars,alts,name) e = (List.map (function Ast0.TypeCTag(p) -> - (p,count_edots.V0.combiner_typeC p, - count_idots.V0.combiner_typeC p, - count_dots.V0.combiner_typeC p) + (p,count_edots.VT0.combiner_rec_typeC p, + count_idots.VT0.combiner_rec_typeC p, + count_dots.VT0.combiner_rec_typeC p) | _ -> failwith "invalid alt")) alts in mkdisj match_typeC metavars alts e (function b -> function mv_b -> - (instantiate b mv_b).V0.rebuilder_typeC) + (instantiate b mv_b).VT0.rebuilder_rec_typeC) (function t -> Ast0.TypeCTag t) - make_disj_type make_minus.V0.rebuilder_typeC - (rebuild_mcode start_line).V0.rebuilder_typeC + make_disj_type make_minus.VT0.rebuilder_rec_typeC + (rebuild_mcode start_line).VT0.rebuilder_rec_typeC name Unparse_ast0.typeC extra_copy_other_plus do_nothing - | _ -> ([],e) + | _ -> (0,[],e) let transform_expr (metavars,alts,name) e = @@ -2164,25 +2152,25 @@ let transform_expr (metavars,alts,name) e = (List.map (function Ast0.ExprTag(p) | Ast0.ArgExprTag(p) | Ast0.TestExprTag(p) -> - (p,count_edots.V0.combiner_expression p, - count_idots.V0.combiner_expression p, - count_dots.V0.combiner_expression p) + (p,count_edots.VT0.combiner_rec_expression p, + count_idots.VT0.combiner_rec_expression p, + count_dots.VT0.combiner_rec_expression p) | _ -> failwith "invalid alt")) alts in mkdisj match_expr metavars alts e (function b -> function mv_b -> - (instantiate b mv_b).V0.rebuilder_expression) + (instantiate b mv_b).VT0.rebuilder_rec_expression) (function e -> Ast0.ExprTag e) (make_disj_expr e) - make_minus.V0.rebuilder_expression - (rebuild_mcode start_line).V0.rebuilder_expression + make_minus.VT0.rebuilder_rec_expression + (rebuild_mcode start_line).VT0.rebuilder_rec_expression name Unparse_ast0.expression extra_copy_other_plus update_others in match alts with (Ast0.ExprTag(_)::_)::_ -> process do_nothing | (Ast0.ArgExprTag(_)::_)::_ when Ast0.get_arg_exp e -> process do_nothing | (Ast0.TestExprTag(_)::_)::_ when Ast0.get_test_pos e -> process Ast0.set_test_exp - | _ -> ([],e) + | _ -> (0,[],e) let transform_decl (metavars,alts,name) e = match alts with @@ -2195,20 +2183,20 @@ let transform_decl (metavars,alts,name) e = (List.map (function Ast0.DeclTag(p) -> - (p,count_edots.V0.combiner_declaration p, - count_idots.V0.combiner_declaration p, - count_dots.V0.combiner_declaration p) + (p,count_edots.VT0.combiner_rec_declaration p, + count_idots.VT0.combiner_rec_declaration p, + count_dots.VT0.combiner_rec_declaration p) | _ -> failwith "invalid alt")) alts in mkdisj match_decl metavars alts e (function b -> function mv_b -> - (instantiate b mv_b).V0.rebuilder_declaration) + (instantiate b mv_b).VT0.rebuilder_rec_declaration) (function d -> Ast0.DeclTag d) make_disj_decl - make_minus.V0.rebuilder_declaration - (rebuild_mcode start_line).V0.rebuilder_declaration + make_minus.VT0.rebuilder_rec_declaration + (rebuild_mcode start_line).VT0.rebuilder_rec_declaration name Unparse_ast0.declaration extra_copy_other_plus do_nothing - | _ -> ([],e) + | _ -> (0,[],e) let transform_stmt (metavars,alts,name) e = match alts with @@ -2221,19 +2209,19 @@ let transform_stmt (metavars,alts,name) e = (List.map (function Ast0.StmtTag(p) -> - (p,count_edots.V0.combiner_statement p, - count_idots.V0.combiner_statement p, - count_dots.V0.combiner_statement p) + (p,count_edots.VT0.combiner_rec_statement p, + count_idots.VT0.combiner_rec_statement p, + count_dots.VT0.combiner_rec_statement p) | _ -> failwith "invalid alt")) alts in mkdisj match_statement metavars alts e (function b -> function mv_b -> - (instantiate b mv_b).V0.rebuilder_statement) + (instantiate b mv_b).VT0.rebuilder_rec_statement) (function s -> Ast0.StmtTag s) - make_disj_stmt make_minus.V0.rebuilder_statement - (rebuild_mcode start_line).V0.rebuilder_statement + make_disj_stmt make_minus.VT0.rebuilder_rec_statement + (rebuild_mcode start_line).VT0.rebuilder_rec_statement name (Unparse_ast0.statement "") extra_copy_stmt_plus do_nothing - | _ -> ([],e) + | _ -> (0,[],e) (* sort of a hack, because there is no disj at top level *) let transform_top (metavars,alts,name) e = @@ -2250,11 +2238,11 @@ let transform_top (metavars,alts,name) e = | _ -> raise (Failure "")) | _ -> raise (Failure ""))) alts in - let (mv,s) = transform_stmt (metavars,strip alts,name) declstm in - (mv,Ast0.rewrap e (Ast0.DECL(s))) - with Failure _ -> ([],e)) + let (count,mv,s) = transform_stmt (metavars,strip alts,name) declstm in + (count,mv,Ast0.rewrap e (Ast0.DECL(s))) + with Failure _ -> (0,[],e)) | Ast0.CODE(stmts) -> - let (mv,res) = + let (count,mv,res) = match alts with (Ast0.DotsStmtTag(_)::_)::_ -> (* start line is given to any leaves in the iso code *) @@ -2265,71 +2253,103 @@ let transform_top (metavars,alts,name) e = (List.map (function Ast0.DotsStmtTag(p) -> - (p,count_edots.V0.combiner_statement_dots p, - count_idots.V0.combiner_statement_dots p, - count_dots.V0.combiner_statement_dots p) + (p,count_edots.VT0.combiner_rec_statement_dots p, + count_idots.VT0.combiner_rec_statement_dots p, + count_dots.VT0.combiner_rec_statement_dots p) | _ -> failwith "invalid alt")) alts in mkdisj match_statement_dots metavars alts stmts (function b -> function mv_b -> - (instantiate b mv_b).V0.rebuilder_statement_dots) + (instantiate b mv_b).VT0.rebuilder_rec_statement_dots) (function s -> Ast0.DotsStmtTag s) (function x -> Ast0.rewrap e (Ast0.DOTS([make_disj_stmt_list x]))) (function x -> - make_minus.V0.rebuilder_statement_dots x) - (rebuild_mcode start_line).V0.rebuilder_statement_dots + make_minus.VT0.rebuilder_rec_statement_dots x) + (rebuild_mcode start_line).VT0.rebuilder_rec_statement_dots name Unparse_ast0.statement_dots extra_copy_other_plus do_nothing - | _ -> ([],stmts) in - (mv,Ast0.rewrap e (Ast0.CODE res)) - | _ -> ([],e) + | _ -> (0,[],stmts) in + (count,mv,Ast0.rewrap e (Ast0.CODE res)) + | _ -> (0,[],e) (* --------------------------------------------------------------------- *) let transform (alts : isomorphism) t = (* the following ugliness is because rebuilder only returns a new term *) let extra_meta_decls = ref ([] : Ast_cocci.metavar list) in - let mcode x = x in - let donothing r k e = k e in + let in_limit n = function + None -> true + | Some n1 -> + n < n1 or + ((if !Flag_parsing_cocci.show_iso_failures + then Common.pr2_once "execeeded iso threshold, see -iso_limit option"); + false) in + let bind x y = x + y in + let option_default = 0 in let exprfn r k e = - let (extra_meta,exp) = transform_expr alts (k e) in - extra_meta_decls := extra_meta @ !extra_meta_decls; - exp in + let (e_count,e) = k e in + if in_limit e_count !Flag_parsing_cocci.iso_limit + then + let (count,extra_meta,exp) = transform_expr alts e in + extra_meta_decls := extra_meta @ !extra_meta_decls; + (bind count e_count,exp) + else (e_count,e) in let declfn r k e = - let (extra_meta,dec) = transform_decl alts (k e) in - extra_meta_decls := extra_meta @ !extra_meta_decls; - dec in + let (e_count,e) = k e in + if in_limit e_count !Flag_parsing_cocci.iso_limit + then + let (count,extra_meta,dec) = transform_decl alts e in + extra_meta_decls := extra_meta @ !extra_meta_decls; + (bind count e_count,dec) + else (e_count,e) in let stmtfn r k e = - let (extra_meta,stm) = transform_stmt alts (k e) in - extra_meta_decls := extra_meta @ !extra_meta_decls; - stm in + let (e_count,e) = k e in + if in_limit e_count !Flag_parsing_cocci.iso_limit + then + let (count,extra_meta,stm) = transform_stmt alts e in + extra_meta_decls := extra_meta @ !extra_meta_decls; + (bind count e_count,stm) + else (e_count,e) in let typefn r k e = - let continue = - match Ast0.unwrap e with - Ast0.Signed(signb,tyb) -> + let (continue,e_count,e) = + match Ast0.unwrap e with + Ast0.Signed(signb,tyb) -> (* Hack! How else to prevent iso from applying under an unsigned??? *) - e - | _ -> k e in - let (extra_meta,ty) = transform_type alts continue in - extra_meta_decls := extra_meta @ !extra_meta_decls; - ty in + (true,0,e) + | _ -> + let (e_count,e) = k e in + if in_limit e_count !Flag_parsing_cocci.iso_limit + then (true,e_count,e) + else (false,e_count,e) in + if continue + then + let (count,extra_meta,ty) = transform_type alts e in + extra_meta_decls := extra_meta @ !extra_meta_decls; + (bind count e_count,ty) + else (e_count,e) in let topfn r k e = - let (extra_meta,ty) = transform_top alts (k e) in - extra_meta_decls := extra_meta @ !extra_meta_decls; - ty in + let (e_count,e) = k e in + if in_limit e_count !Flag_parsing_cocci.iso_limit + then + let (count,extra_meta,ty) = transform_top alts e in + extra_meta_decls := extra_meta @ !extra_meta_decls; + (bind count e_count,ty) + else (e_count,e) in let res = - V0.rebuilder - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - donothing exprfn typefn donothing donothing declfn stmtfn - donothing topfn in - let res = res.V0.rebuilder_top_level t in + V0.combiner_rebuilder bind option_default + {V0.combiner_rebuilder_functions with + VT0.combiner_rebuilder_exprfn = exprfn; + VT0.combiner_rebuilder_tyfn = typefn; + VT0.combiner_rebuilder_declfn = declfn; + VT0.combiner_rebuilder_stmtfn = stmtfn; + VT0.combiner_rebuilder_topfn = topfn} in + let (_,res) = res.VT0.top_level t in (!extra_meta_decls,res) (* --------------------------------------------------------------------- *) @@ -2338,7 +2358,7 @@ let transform (alts : isomorphism) t = let rewrap = let mcode (x,a,i,mc,pos) = (x,a,i,Ast0.context_befaft(),pos) in let donothing r k e = Ast0.context_wrap(Ast0.unwrap(k e)) in - V0.rebuilder + V0.flat_rebuilder mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing @@ -2346,28 +2366,31 @@ let rewrap = let rewrap_anything = function Ast0.DotsExprTag(d) -> - Ast0.DotsExprTag(rewrap.V0.rebuilder_expression_dots d) + Ast0.DotsExprTag(rewrap.VT0.rebuilder_rec_expression_dots d) | Ast0.DotsInitTag(d) -> - Ast0.DotsInitTag(rewrap.V0.rebuilder_initialiser_list d) + Ast0.DotsInitTag(rewrap.VT0.rebuilder_rec_initialiser_list d) | Ast0.DotsParamTag(d) -> - Ast0.DotsParamTag(rewrap.V0.rebuilder_parameter_list d) + Ast0.DotsParamTag(rewrap.VT0.rebuilder_rec_parameter_list d) | Ast0.DotsStmtTag(d) -> - Ast0.DotsStmtTag(rewrap.V0.rebuilder_statement_dots d) + Ast0.DotsStmtTag(rewrap.VT0.rebuilder_rec_statement_dots d) | Ast0.DotsDeclTag(d) -> - Ast0.DotsDeclTag(rewrap.V0.rebuilder_declaration_dots d) + Ast0.DotsDeclTag(rewrap.VT0.rebuilder_rec_declaration_dots d) | Ast0.DotsCaseTag(d) -> - Ast0.DotsCaseTag(rewrap.V0.rebuilder_case_line_dots d) - | Ast0.IdentTag(d) -> Ast0.IdentTag(rewrap.V0.rebuilder_ident d) - | Ast0.ExprTag(d) -> Ast0.ExprTag(rewrap.V0.rebuilder_expression d) - | Ast0.ArgExprTag(d) -> Ast0.ArgExprTag(rewrap.V0.rebuilder_expression d) - | Ast0.TestExprTag(d) -> Ast0.TestExprTag(rewrap.V0.rebuilder_expression d) - | Ast0.TypeCTag(d) -> Ast0.TypeCTag(rewrap.V0.rebuilder_typeC d) - | Ast0.InitTag(d) -> Ast0.InitTag(rewrap.V0.rebuilder_initialiser d) - | Ast0.ParamTag(d) -> Ast0.ParamTag(rewrap.V0.rebuilder_parameter d) - | Ast0.DeclTag(d) -> Ast0.DeclTag(rewrap.V0.rebuilder_declaration d) - | Ast0.StmtTag(d) -> Ast0.StmtTag(rewrap.V0.rebuilder_statement d) - | Ast0.CaseLineTag(d) -> Ast0.CaseLineTag(rewrap.V0.rebuilder_case_line d) - | Ast0.TopTag(d) -> Ast0.TopTag(rewrap.V0.rebuilder_top_level d) + Ast0.DotsCaseTag(rewrap.VT0.rebuilder_rec_case_line_dots d) + | Ast0.IdentTag(d) -> Ast0.IdentTag(rewrap.VT0.rebuilder_rec_ident d) + | Ast0.ExprTag(d) -> Ast0.ExprTag(rewrap.VT0.rebuilder_rec_expression d) + | Ast0.ArgExprTag(d) -> + Ast0.ArgExprTag(rewrap.VT0.rebuilder_rec_expression d) + | Ast0.TestExprTag(d) -> + Ast0.TestExprTag(rewrap.VT0.rebuilder_rec_expression d) + | Ast0.TypeCTag(d) -> Ast0.TypeCTag(rewrap.VT0.rebuilder_rec_typeC d) + | Ast0.InitTag(d) -> Ast0.InitTag(rewrap.VT0.rebuilder_rec_initialiser d) + | Ast0.ParamTag(d) -> Ast0.ParamTag(rewrap.VT0.rebuilder_rec_parameter d) + | Ast0.DeclTag(d) -> Ast0.DeclTag(rewrap.VT0.rebuilder_rec_declaration d) + | Ast0.StmtTag(d) -> Ast0.StmtTag(rewrap.VT0.rebuilder_rec_statement d) + | Ast0.CaseLineTag(d) -> + Ast0.CaseLineTag(rewrap.VT0.rebuilder_rec_case_line d) + | Ast0.TopTag(d) -> Ast0.TopTag(rewrap.VT0.rebuilder_rec_top_level d) | Ast0.IsoWhenTag(_) | Ast0.IsoWhenTTag(_) | Ast0.IsoWhenFTag(_) -> failwith "only for isos within iso phase" | Ast0.MetaPosTag(p) -> Ast0.MetaPosTag(p) diff --git a/parsing_cocci/iso_pattern.mli b/parsing_cocci/iso_pattern.mli index 32b4655..d12a37a 100644 --- a/parsing_cocci/iso_pattern.mli +++ b/parsing_cocci/iso_pattern.mli @@ -5,4 +5,4 @@ val apply_isos : isomorphism list -> Ast0_cocci.rule -> string (* rule name *) -> Ast_cocci.metavar list * Ast0_cocci.rule -val rebuild_mcode : int option -> Visitor_ast0.rebuilder +val rebuild_mcode : int option -> Visitor_ast0_types.rebuilder_rec_functions diff --git a/parsing_cocci/lexer_cocci.mll b/parsing_cocci/lexer_cocci.mll index a9a31fb..0761106 100644 --- a/parsing_cocci/lexer_cocci.mll +++ b/parsing_cocci/lexer_cocci.mll @@ -225,7 +225,9 @@ let id_tokens lexbuf = | "exists" when in_rule_name -> check_context_linetype s; TExists | "forall" when in_rule_name -> check_context_linetype s; TForall | "reverse" when in_rule_name -> check_context_linetype s; TReverse - | "script" when in_rule_name -> check_context_linetype s; TScript + | "script" when in_rule_name -> check_context_linetype s; TScript + | "initialize" when in_rule_name -> check_context_linetype s; TInitialize + | "finalize" when in_rule_name -> check_context_linetype s; TFinalize | "char" -> Tchar linetype | "short" -> Tshort linetype @@ -300,6 +302,10 @@ let init _ = (fun name constraints pure -> let fn clt = TMetaId(name,constraints,pure,clt) in Hashtbl.replace metavariables (get_name name) fn); + Data.add_fresh_id_meta := + (fun name -> + let fn clt = TMetaId(name,[],Ast0.Impure,clt) in + Hashtbl.replace metavariables (get_name name) fn); Data.add_type_meta := (fun name pure -> let fn clt = TMetaType(name,pure,clt) in diff --git a/parsing_cocci/parse_aux.ml b/parsing_cocci/parse_aux.ml index d2900ca..f7f9e0e 100644 --- a/parsing_cocci/parse_aux.ml +++ b/parsing_cocci/parse_aux.ml @@ -201,7 +201,7 @@ let check_meta tok = raise (Semantic_cocci.Semantic ("incompatible inheritance declaration "^name))) - | Ast.MetaFreshIdDecl(Ast.NONE,(rule,name)) -> + | Ast.MetaFreshIdDecl((rule,name),seed) -> raise (Semantic_cocci.Semantic "can't inherit the freshness of an identifier") @@ -340,6 +340,19 @@ let create_metadec ar ispure kindfn ids current_rule = kindfn ar rule ispure checker) ids) +let create_fresh_metadec kindfn ids current_rule = + List.concat + (List.map + (function ((rule,nm),seed) -> + let (rule,checker) = + match rule with + None -> ((current_rule,nm),function x -> [Common.Left x]) + | Some rule -> + ((rule,nm), + function x -> check_meta x; [Common.Right x]) in + kindfn rule checker seed) + ids) + let create_metadec_ne ar ispure kindfn ids current_rule = List.concat (List.map @@ -482,3 +495,11 @@ let make_generated_rule_name_result nm d i a e ee = let make_script_rule_name_result lang deps = let l = id2name lang in Ast.ScriptRulename (l,deps) + +let make_initial_script_rule_name_result lang = + let l = id2name lang in + Ast.InitialScriptRulename(l) + +let make_final_script_rule_name_result lang = + let l = id2name lang in + Ast.FinalScriptRulename(l) diff --git a/parsing_cocci/parse_cocci.ml b/parsing_cocci/parse_cocci.ml index 04c0afd..db75412 100644 --- a/parsing_cocci/parse_cocci.ml +++ b/parsing_cocci/parse_cocci.ml @@ -26,6 +26,7 @@ separately (thus duplicating work for the parsing of the context elements) *) module D = Data module PC = Parser_cocci_menhir module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types module Ast = Ast_cocci module Ast0 = Ast0_cocci let pr = Printf.sprintf @@ -199,6 +200,8 @@ let token2c (tok,_) = | PC.TArob -> "@" | PC.TPArob -> "P@" | PC.TScript -> "script" + | PC.TInitialize -> "initialize" + | PC.TFinalize -> "finalize" | PC.TWhen(clt) -> "WHEN"^(line_type2c clt) | PC.TWhenTrue(clt) -> "WHEN TRUE"^(line_type2c clt) @@ -627,7 +630,8 @@ let split_token ((tok,_) as t) = | PC.TMetaStm(_,_,clt) | PC.TMetaStmList(_,_,clt) | PC.TMetaErr(_,_,_,clt) | PC.TMetaFunc(_,_,_,clt) | PC.TMetaLocalFunc(_,_,_,clt) | PC.TMetaDeclarer(_,_,_,clt) | PC.TMetaIterator(_,_,_,clt) -> split t clt - | PC.TMPtVirg | PC.TArob | PC.TArobArob | PC.TScript -> ([t],[t]) + | PC.TMPtVirg | PC.TArob | PC.TArobArob | PC.TScript + | PC.TInitialize | PC.TFinalize -> ([t],[t]) | PC.TPArob | PC.TMetaPos(_,_,_,_) -> ([t],[]) | PC.TFunDecl(clt) @@ -1215,12 +1219,12 @@ let any_modif rule = let bind x y = x or y in let option_default = false in let fn = - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing donothing in - List.exists fn.V0.combiner_top_level rule + List.exists fn.VT0.combiner_rec_top_level rule let drop_last extra l = List.rev(extra@(List.tl(List.rev l))) @@ -1277,6 +1281,8 @@ let get_rule_name parse_fn starts_with_name get_tokens file prefix = | Ast.GeneratedRulename (nm,a,b,c,d,e) -> Ast.GeneratedRulename (check_name nm,a,b,c,d,e) | Ast.ScriptRulename(s,deps) -> Ast.ScriptRulename(s,deps) + | Ast.InitialScriptRulename(s) -> Ast.InitialScriptRulename(s) + | Ast.FinalScriptRulename(s) -> Ast.FinalScriptRulename(s) else Ast.CocciRulename(Some(mknm()),Ast.NoDep,[],[],Ast.Undetermined,false) in Data.in_rule_name := false; @@ -1433,7 +1439,7 @@ let parse file = if !Flag.sgrep_mode2 then (* not actually used for anything, except context_neg *) List.map - (Iso_pattern.rebuild_mcode None).V0.rebuilder_top_level + (Iso_pattern.rebuild_mcode None).VT0.rebuilder_rec_top_level minus_res else if is_expression @@ -1488,6 +1494,28 @@ let parse file = | _ -> failwith "Malformed script rule" in (more,Ast0.ScriptRule(language, deps, metavars, data),[],tokens) in + let parse_if_script_rule k language = + let get_tokens = tokens_script_all table file false lexbuf in + + (* script code *) + let (more, tokens) = get_tokens [PC.TArobArob; PC.TArob] in + let data = + match List.hd tokens with + (PC.TScriptData(s),_) -> s + | (PC.TArobArob,_) | (PC.TArob,_) -> "" + | _ -> failwith "Malformed script rule" in + (more,k (language, data),[],tokens) in + + let parse_iscript_rule = + parse_if_script_rule + (function (language,data) -> + Ast0.InitialScriptRule(language,data)) in + + let parse_fscript_rule = + parse_if_script_rule + (function (language,data) -> + Ast0.FinalScriptRule(language,data)) in + let parse_rule old_metas starts_with_name = let rulename = get_rule_name PC.rule_name starts_with_name get_tokens file @@ -1501,7 +1529,9 @@ let parse file = parse_cocci_rule Ast.Generated old_metas (s,a,b,c,d,e) in Data.in_generating := false; res - | Ast.ScriptRulename (l,deps) -> parse_script_rule l old_metas deps + | Ast.ScriptRulename(l,deps) -> parse_script_rule l old_metas deps + | Ast.InitialScriptRulename(l) -> parse_iscript_rule l + | Ast.FinalScriptRulename(l) -> parse_fscript_rule l | _ -> failwith "Malformed rule name" in @@ -1547,6 +1577,8 @@ let process file isofile verbose = List.map (function Ast0.ScriptRule (a,b,c,d) -> [([],Ast.ScriptRule (a,b,c,d))] + | Ast0.InitialScriptRule (a,b) -> [([],Ast.InitialScriptRule (a,b))] + | Ast0.FinalScriptRule (a,b) -> [([],Ast.FinalScriptRule (a,b))] | Ast0.CocciRule ((minus, metavarsm, (iso, dropiso, dependencies, rule_name, exists)), diff --git a/parsing_cocci/parser_cocci_menhir.ml b/parsing_cocci/parser_cocci_menhir.ml index eed5248..66f731b 100644 --- a/parsing_cocci/parser_cocci_menhir.ml +++ b/parsing_cocci/parser_cocci_menhir.ml @@ -450,58 +450,60 @@ type token = (string * Data.clt) # 452 "parser_cocci_menhir.ml" ) + | TInitialize | TInitialiser | TIncludeNL of ( # 80 "parser_cocci_menhir.mly" (string * Data.clt) -# 458 "parser_cocci_menhir.ml" +# 459 "parser_cocci_menhir.ml" ) | TIncludeL of ( # 80 "parser_cocci_menhir.mly" (string * Data.clt) -# 463 "parser_cocci_menhir.ml" +# 464 "parser_cocci_menhir.ml" ) | TInc of ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 468 "parser_cocci_menhir.ml" +# 469 "parser_cocci_menhir.ml" ) | TIf of ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 473 "parser_cocci_menhir.ml" +# 474 "parser_cocci_menhir.ml" ) | TIdentifier | TIdent of ( # 59 "parser_cocci_menhir.mly" (string * Data.clt) -# 479 "parser_cocci_menhir.ml" +# 480 "parser_cocci_menhir.ml" ) | TIdExpression | TGoto of ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 485 "parser_cocci_menhir.ml" +# 486 "parser_cocci_menhir.ml" ) | TGenerated | TFunction | TFunDecl of ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 492 "parser_cocci_menhir.ml" +# 493 "parser_cocci_menhir.ml" ) | TFresh | TForall | TFor of ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 499 "parser_cocci_menhir.ml" +# 500 "parser_cocci_menhir.ml" ) | TFloat of ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 504 "parser_cocci_menhir.ml" +# 505 "parser_cocci_menhir.ml" ) + | TFinalize | TExtends | TExpression | TExists @@ -510,150 +512,150 @@ type token = | TEqEq of ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 514 "parser_cocci_menhir.ml" +# 516 "parser_cocci_menhir.ml" ) | TEq of ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 519 "parser_cocci_menhir.ml" +# 521 "parser_cocci_menhir.ml" ) | TElse of ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 524 "parser_cocci_menhir.ml" +# 526 "parser_cocci_menhir.ml" ) | TEllipsis of ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 529 "parser_cocci_menhir.ml" +# 531 "parser_cocci_menhir.ml" ) | TDotDot of ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 534 "parser_cocci_menhir.ml" +# 536 "parser_cocci_menhir.ml" ) | TDot of ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 539 "parser_cocci_menhir.ml" +# 541 "parser_cocci_menhir.ml" ) | TDo of ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 544 "parser_cocci_menhir.ml" +# 546 "parser_cocci_menhir.ml" ) | TDmOp of ( # 97 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 549 "parser_cocci_menhir.ml" +# 551 "parser_cocci_menhir.ml" ) | TDisable | TDepends | TDefineParam of ( # 82 "parser_cocci_menhir.mly" (Data.clt * token * int) -# 556 "parser_cocci_menhir.ml" +# 558 "parser_cocci_menhir.ml" ) | TDefine of ( # 81 "parser_cocci_menhir.mly" (Data.clt * token) -# 561 "parser_cocci_menhir.ml" +# 563 "parser_cocci_menhir.ml" ) | TDefault of ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 566 "parser_cocci_menhir.ml" +# 568 "parser_cocci_menhir.ml" ) | TDeclarerId of ( # 59 "parser_cocci_menhir.mly" (string * Data.clt) -# 571 "parser_cocci_menhir.ml" +# 573 "parser_cocci_menhir.ml" ) | TDeclarer | TDec of ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 577 "parser_cocci_menhir.ml" +# 579 "parser_cocci_menhir.ml" ) | TContinue of ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 582 "parser_cocci_menhir.ml" +# 584 "parser_cocci_menhir.ml" ) | TContext | TConstant | TComma of ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 589 "parser_cocci_menhir.ml" +# 591 "parser_cocci_menhir.ml" ) | TChar of ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 594 "parser_cocci_menhir.ml" +# 596 "parser_cocci_menhir.ml" ) | TCase of ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 599 "parser_cocci_menhir.ml" +# 601 "parser_cocci_menhir.ml" ) | TCPar0 of ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 604 "parser_cocci_menhir.ml" +# 606 "parser_cocci_menhir.ml" ) | TCPar of ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 609 "parser_cocci_menhir.ml" +# 611 "parser_cocci_menhir.ml" ) | TCEllipsis of ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 614 "parser_cocci_menhir.ml" +# 616 "parser_cocci_menhir.ml" ) | TCCro of ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 619 "parser_cocci_menhir.ml" +# 621 "parser_cocci_menhir.ml" ) | TCBrace of ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 624 "parser_cocci_menhir.ml" +# 626 "parser_cocci_menhir.ml" ) | TBreak of ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 629 "parser_cocci_menhir.ml" +# 631 "parser_cocci_menhir.ml" ) | TBang0 | TBang of ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 635 "parser_cocci_menhir.ml" +# 637 "parser_cocci_menhir.ml" ) | TAssign of ( # 108 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) -# 640 "parser_cocci_menhir.ml" +# 642 "parser_cocci_menhir.ml" ) | TArobArob | TArob | TAny of ( # 74 "parser_cocci_menhir.mly" (Data.clt) -# 647 "parser_cocci_menhir.ml" +# 649 "parser_cocci_menhir.ml" ) | TAndLog of ( # 90 "parser_cocci_menhir.mly" (Data.clt) -# 652 "parser_cocci_menhir.ml" +# 654 "parser_cocci_menhir.ml" ) | TAnd of ( # 93 "parser_cocci_menhir.mly" (Data.clt) -# 657 "parser_cocci_menhir.ml" +# 659 "parser_cocci_menhir.ml" ) | EOF @@ -672,120 +674,124 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct fun _tok -> match _tok with | EOF -> - 170 + 172 | TAnd _ -> - 169 + 171 | TAndLog _ -> - 168 + 170 | TAny _ -> - 167 + 169 | TArob -> - 166 + 168 | TArobArob -> - 165 + 167 | TAssign _ -> - 164 + 166 | TBang _ -> - 163 + 165 | TBang0 -> - 162 + 164 | TBreak _ -> - 161 + 163 | TCBrace _ -> - 160 + 162 | TCCro _ -> - 159 + 161 | TCEllipsis _ -> - 158 + 160 | TCPar _ -> - 157 + 159 | TCPar0 _ -> - 156 + 158 | TCase _ -> - 155 + 157 | TChar _ -> - 154 + 156 | TComma _ -> - 153 + 155 | TConstant -> - 152 + 154 | TContext -> - 151 + 153 | TContinue _ -> - 150 + 152 | TDec _ -> - 149 + 151 | TDeclarer -> - 148 + 150 | TDeclarerId _ -> - 147 + 149 | TDefault _ -> - 146 + 148 | TDefine _ -> - 145 + 147 | TDefineParam _ -> - 144 + 146 | TDepends -> - 143 + 145 | TDisable -> - 142 + 144 | TDmOp _ -> - 141 + 143 | TDo _ -> - 140 + 142 | TDot _ -> - 139 + 141 | TDotDot _ -> - 138 + 140 | TEllipsis _ -> - 137 + 139 | TElse _ -> - 136 + 138 | TEq _ -> - 135 + 137 | TEqEq _ -> - 134 + 136 | TError -> - 133 + 135 | TEver -> - 132 + 134 | TExists -> - 131 + 133 | TExpression -> - 130 + 132 | TExtends -> - 129 + 131 + | TFinalize -> + 130 | TFloat _ -> - 128 + 129 | TFor _ -> - 127 + 128 | TForall -> - 126 + 127 | TFresh -> - 125 + 126 | TFunDecl _ -> - 124 + 125 | TFunction -> - 123 + 124 | TGenerated -> - 122 + 123 | TGoto _ -> - 121 + 122 | TIdExpression -> - 120 + 121 | TIdent _ -> - 119 + 120 | TIdentifier -> - 118 + 119 | TIf _ -> - 117 + 118 | TInc _ -> - 116 + 117 | TIncludeL _ -> - 115 + 116 | TIncludeNL _ -> - 114 + 115 | TInitialiser -> + 114 + | TInitialize -> 113 | TInt _ -> 112 @@ -1102,6 +1108,8 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Obj.repr () | TExtends -> Obj.repr () + | TFinalize -> + Obj.repr () | TFloat _v -> Obj.repr _v | TFor _v -> @@ -1134,6 +1142,8 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Obj.repr _v | TInitialiser -> Obj.repr () + | TInitialize -> + Obj.repr () | TInt _v -> Obj.repr _v | TInvalid -> @@ -1360,19 +1370,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Obj.repr _v let default_reduction = - (16, "\000\000\000\000\0014\0015\000\000\0017\0016\000\001\000\000\001p\000\000\000\000\000\136\000\000\000\000\001\236\000\142\000\000\001\024\000\000\001#\001\027\001\021\001-\002\219\002\218\000\000\001\025\000\000\001$\001\028\001\022\001.\001\026\000\000\001%\001\029\001\031\000\000\0011\002\133\0010\001&\001\030\000\135\001\023\001,\000\000\000\000\001+\000\000\000\000\000\000\000\000\000\000\001b\000\240\002\209\000\000\000\000\000\000\000\000\000\000\002\214\000\000\001(\000\000\002\216\000\000\000\000\000\000\003\022\002O\000\000\003\020\000\000\002i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\019\003\021\002U\001\012\002T\001\n\001\011\002S\002R\002Q\002M\000\000\000\000\002N\000\213\000\000\002P\000\000\003\018\000\000\000c\001\t\0020\000\000\000\000\0023\000\000\000\015\000\000\000\000\000\000\000\000\000\214\002L\002X\000[\000\021\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\000\000\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\130\002\017\000R\000\223\000^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\000T\000\000\000S\001\020\000\000\000\000\000\140\000\224\000\000\0026\000\225\000\014\000\016\000\000\000\000\000\143\000\000\000\141\000\000\000\000\000\228\000\000\000\000\0021\0024\000\000\0022\0025\002\249\002\250\002\248\000\000\002V\002\247\000\000\002p\000\000\000\000\002o\002n\002m\002l\002k\002g\000\000\000\000\002h\000\000\002j\000\000\000\000\000g\002>\000\000\000\000\002A\000\000\000\000\002D\000\000\000\000\002?\002B\000\000\002@\002C\002r\002f\003\007\003\008\003\006\003\005\000h\000\000\000\000\000W\000\000\000V\000\235\000\000\001\228\000\000\000\000\000\000\000\000\000\000\000\218\001\234\000\000\000\000\001\136\000U\0001\000\211\000_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\000\000\0003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002W\000\000\000\144\000\000\000\000\001\212\000\000\001~\001\193\000\000\000\000\001\211\000\000\001|\001\192\000\000\000\000\000d\000\000\002q\000\000\000\000\003\n\003\t\000\000\001\229\000\000\000\000\002\252\002\251\000\000\000Q\000\150\000\000\001d\000\000\002\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\248\000\154\000\000\000\000\000n\000o\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\165\001\217\000\000\000\151\000\160\000\000\001\219\000\000\000\000\000\000\000\000\000\152\000\166\000\000\001j\000\000\000\000\002\211\000\000\000\000\000\138\000\000\000\000\002\210\000\000\000\000\000\000\002\213\002\217\000\000\000\000\000\000\001)\000\000\000\222\000\000\001*\000\000\000\000\001M\000\000\001L\000\000\001Z\000\000\001r\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\000\147\000\000\000\000\000\000\000\000\000\149\000\000\000\145\000\000\002\245\000\000\000\194\002\244\000\000\000\000\000\148\000\000\000\146\002\205\002\207\002\208\002\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002v\000\000\000\000\000\000\000\000\002}\000\000\000\000\002|\002{\002z\002y\002x\001I\002t\000\000\000\000\002u\000\000\002w\000\000\000\000\000i\002E\000\000\000\000\002H\000\000\000\000\002K\000\000\000\000\002F\002I\000\000\002G\002J\002\127\002s\003\014\003\015\003\013\003\012\000j\000\000\000\000\000Z\000\000\000Y\000\000\002~\000\000\001\194\000X\000?\000\234\000`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\016\000\000\002\196\000\000\002\195\000\000\000\000\000\000\000\000\003\029\000\000\000\000\000\000\003\030\000\000\000\018\000\000\000\000\000\000\003\025\000\000\001\138\000\000\000\000\000\000\000\167\002\186\001`\000\000\000\156\001_\0019\0018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\215\000\216\000\200\000\000\001n\000\000\000\000\000\199\000\195\000\000\000\202\000\196\000\201\000\000\002\198\000\000\002\197\002\183\000\000\000\000\000\000\000\000\000\000\002\192\000\000\000\000\000\000\000\000\000\000\002\193\002\185\000\000\002\199\000\000\002\187\000\000\000\171\000\000\002\202\000\155\000\000\001;\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000w\000\000\000\000\000\000\002\\\000\000\000\000\000\000\002d\000\000\000\000\002c\000\000\003\003\002b\002a\002`\002_\002^\002Z\000\000\000\000\002[\000\000\002]\000\000\000\000\000\000\000\000\000\000\000e\0027\000\000\000\000\002:\000\000\000\000\002=\000\000\000\000\0028\002;\000\000\0029\002<\002e\002Y\000f\003\000\003\001\002\255\002\254\003\002\000\000\000\000\000\000\000\000\000\210\000\209\000\000\000\000\000\000\000\000\001?\000\000\000\220\001<\000\000\000\208\001B\000\000\000\000\001C\000\000\000\000\001D\000\000\001l\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\000\000%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001E\000\000\001A\000\000\000\000\001G\000\000\000\000\000\000\000\000\000\000\000\000\000t\000q\000r\001H\001>\000\000\001=\000\000\000\187\000\000\002\164\000\000\000\000\000\183\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\190\000\000\000\000\000\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\000\000\000\000\000\000\000\180\000\000\000\177\000\000\000\000\000\000\000\000\000\000\000\188\000\000\000\184\000\000\000\000\002\223\000\000\002\230\000\173\000\000\000\000\000\000\000\000\000\185\000\000\000\181\000\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\000\000\192\000\000\002\224\000\172\000\000\002\225\000\000\002\232\000\000\000\000\000\000\000\000\000\191\000\000\000\175\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\000\179\000\000\000\176\000\000\000\000\000\000\000\000\000\000\000\186\000\000\000\182\000\169\000\168\000\000\002\233\002\234\000\000\002\235\000\000\002\236\000\000\001:\002\190\000\000\000\000\001\216\000\000\001\134\001\198\000\000\002\184\000\000\000\000\000\000\002\189\000\000\000\000\000\000\001\002\000\000\000\252\000\000\000\253\000\000\001\007\000\251\001\006\000\000\002\201\001\008\000\000\000\174\000\000\000\000\000\000\000\000\001\004\000\255\001\213\000\000\001\000\000\000\001\001\000\000\001\128\001\195\000\000\000\000\000\000\001\224\000\000\001\222\000\000\000\000\001\226\001\220\000\000\001\227\001\221\000\000\002\203\001\230\000\000\000\170\000\000\000\000\001\214\000\000\001\130\001\196\000\000\003\026\000\000\003\023\000\000\003\024\000\019\000\020\000\000\000\000\002\148\000\000\002\147\000\000\000\000\002\150\000\000\002\149\000\000\000\000\000\000\002\001\000\000\000\000\002\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\008\000\000\000\000\002\011\000\000\000\000\001\251\000\000\000\000\001\254\000\000\000\000\000\000\002\002\000\000\000\000\002\006\000\000\000\000\001\215\000\000\000\000\001\255\000\000\000\000\002\003\002\145\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\007\000\000\000\000\002\n\000\000\002\146\000\000\000\000\000\000\000\000\002\t\000\000\001\249\000\000\001\250\000\000\000\000\001\253\000\000\000\000\000\000\002\000\000\000\000\000\002\004\000\000\001\132\001\197\000\000\002\151\000\000\000\000\000\000\003\027\000\017\000u\000\000\003\028\000\000\000\000\002\160\000\000\000\000\002\204\000a\000\000\000\000\000\000\000b\000\000\002\194\000\000\001f\002\191\000\000\000\000\001S\000\000\001R\000\000\001[\000\000\001x\000\000\000\000\000\000\001Q\000\000\001P\000\000\001X\000\000\001v\000\000\000\000\000\000\001U\000\000\001T\000\000\001Y\000\000\001z\000\000\000\000\000\000\001V\000\000\000\000\000\000\000\000\001O\000\000\001N\000\000\001\\\000\000\001t\000\000\000\000\000\000\001W\000\002\000\000\000N\000O\000M\001]\000\003\000\000\000\000\002\130\000\000\002\015\000\000\002\136\002\138\000\000\000\000\001\161\002\139\002\137\000\128\000\000\000\000\002\182\000\000\000\000\000\000\000z\000\000\000\000\002\170\000\000\001\244\001\243\001\156\002\143\002\134\002\135\000\000\001\189\000\000\002\131\000\000\000\000\000|\000\000\000\000\002\174\000\000\001\171\000\000\000\000\001\167\000\000\000\000\000\000\001\170\000\000\001\169\000\000\000\000\000\000\000\000\000\000\000\000\001\190\000\000\001\165\000\000\001\164\000\000\000v\000\000\000\000\002\162\000\000\000\000\001\160\000\000\000\000\000~\000\000\000\000\002\178\000\000\000\000\000\000\000{\000\000\000\000\002\172\000\000\001\240\001\239\001\152\002\141\000\000\001\176\000\000\000\000\000\000\001\173\000\000\001\178\000\000\000\000\001\168\000\000\000\000\001\174\000\000\000\000\001\175\000\000\000\000\000\000\001\163\000\000\000\000\000\000\000\000\000\000\000\000\001\191\000\000\001\166\000}\000\000\000\000\002\176\000\000\000\000\000\000\0013\000y\0012\000\000\000\000\002\168\000\000\001\238\001\237\001\150\002\140\000\000\000\127\000\000\000\000\002\180\000\000\000\000\000\000\000\000\001\242\001\241\001\154\002\142\000\000\001\183\000\000\001\187\000\000\000\000\001\179\000\000\000\000\000\000\001\172\000\000\001\177\000\000\000\000\000\000\000\000\000\000\000\000\001\186\001\159\000\000\001\185\000\000\000\000\000\000\000\000\001\182\000\000\000\000\001\181\000\000\001\180\000\000\000\000\000\000\000\000\001\184\000\000\001\188\000\000\000\000\001^\000\004\000\000\001\162\000\005\000\000\000\000\000\238\000\006\000\000\001\202\001\203\001\201\000\000\000\000\000\000\000\000\000\000\000\000\000x\000\000\000\000\002\166\000\000\000\229\001\200\001\144\002\220\001\146\000\000\000\007\000\000\001\205\001\206\001\204\000\000\000\000\000\000\000\000\000\000\000\000\000\239\000\242\000\000\000\000\000\000\000\000\000\247\000\249\000\248\000\243\000\245\000\244\000\000\000\000\000\000\000\000\000\000\002\226\002\239\000\000\002\227\000\000\002\228\000\000\000\000\002\221\000\000\000\000\000\000\000\000\002\238\000\000\000\000\002\237\001\210\001\209\000\000\000\000\001\148\000\000\001\199\001\207\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000l\000m\000\000\000\000\000\000\001\245\000\000\000\163\000\000\001h\000\000\000\000\000\162\000\158\000\000\000\000\000\000\000\000\001\013\000\000\000\000\002\242\000\000\002\243\000\000\000\000\001\233\001\231\000\000\001\232\000\008\000\000\000\t\000\000\002 \002!\002\031\000\000\000\000\002\030\000\000\000\n\000\000\002#\002$\002\"\000\000\002&\000\000\000\000\000\000\002\024\000\000\000\000\002\026\000\000\002\020\000\000\002\022\000\000\002\027\000\000\002\028\002\021\002\019\002'\001\158\000\000\002\029\000\000\002)\000\000\002(\000\000\002*\000\000\002\144\000\011\000\000\000\000\000\000\000\000\000\000\000\000\002+\000\000\000\000\002.\000\000\002-\000\000\002,\000\203\000\000\000\000\000\000\000\000\000\204\002/\000\000\000\000\002\155\000\000\000\000\000\237\000\000\000\000\000\000\000\000\000\000\002\158\000k\000\000\000\000\000\212\000\000\000\000\000\232\000\231\000\230\000\000\001K\000\000\002\154\001\142\001\140\000\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\153\000\000\000\000\000\000\000\000\000\000\000\000\002\152\000\000\000\013\000\000\000\000\000\000\000\000\000\000\002\156") + (16, "\000\000\000\000\0015\0016\000\000\0018\0017\000\001\000\000\001q\000\000\000\000\000\137\000\000\000\000\001\237\000\143\000\000\001\025\000\000\001$\001\028\001\022\001.\002\226\002\225\000\000\001\026\000\000\001%\001\029\001\023\001/\001\027\000\000\001&\001\030\001 \000\000\0012\002\134\0011\001'\001\031\000\136\001\024\001-\000\000\000\000\001,\000\000\000\000\000\000\000\000\000\000\001c\000\241\002\216\000\000\000\000\000\000\000\000\000\000\002\221\000\000\001)\000\000\002\223\000\000\000\000\000\000\003\029\002P\000\000\003\027\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\003\028\002V\001\013\002U\001\011\001\012\002T\002S\002R\002N\000\000\000\000\002O\000\214\000\000\002Q\000\000\003\025\000\000\000c\001\n\0021\000\000\000\000\0024\000\000\000\015\000\000\000\000\000\000\000\000\000\215\002M\002Y\000[\000\021\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\000\000\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\002\018\000R\000\224\000^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\000T\000\000\000S\001\021\000\000\000\000\000\141\000\225\000\000\0027\000\226\000\014\000\016\000\000\000\000\000\144\000\000\000\142\000\000\000\000\000\229\000\000\000\000\0022\0025\000\000\0023\0026\003\000\003\001\002\255\000\000\002W\002\254\000\000\002q\000\000\000\000\002p\002o\002n\002m\002l\002h\000\000\000\000\002i\000\000\002k\000\000\000\000\000g\002?\000\000\000\000\002B\000\000\000\000\002E\000\000\000\000\002@\002C\000\000\002A\002D\002s\002g\003\014\003\015\003\013\003\012\000h\000\000\000\000\000W\000\000\000V\000\236\000\000\001\229\000\000\000\000\000\000\000\000\000\000\000\219\001\235\000\000\000\000\001\137\000U\0001\000\212\000_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\000\000\0003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002X\000\000\000\145\000\000\000\000\001\213\000\000\001\127\001\194\000\000\000\000\001\212\000\000\001}\001\193\000\000\000\000\000d\000\000\002r\000\000\000\000\003\017\003\016\000\000\001\230\000\000\000\000\003\003\003\002\000\000\000Q\000\151\000\000\001e\000\000\002\219\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\249\000\155\000\000\000\000\000n\000o\001\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\166\001\218\000\000\000\152\000\161\000\000\001\220\000\000\000\000\000\000\000\000\000\153\000\167\000\000\001k\000\000\000\000\002\218\000\000\000\000\000\139\000\000\000\000\002\217\000\000\000\000\000\000\002\220\002\224\000\000\000\000\000\000\001*\000\000\000\223\000\000\001+\000\000\000\000\001N\000\000\001M\000\000\001[\000\000\001s\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000\000\000\148\000\000\000\000\000\000\000\000\000\150\000\000\000\146\000\000\002\252\000\000\000\195\002\251\000\000\000\000\000\149\000\000\000\147\002\212\002\214\002\215\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002w\000\000\000\000\000\000\000\000\002~\000\000\000\000\002}\002|\002{\002z\002y\001J\002u\000\000\000\000\002v\000\000\002x\000\000\000\000\000i\002F\000\000\000\000\002I\000\000\000\000\002L\000\000\000\000\002G\002J\000\000\002H\002K\002\128\002t\003\021\003\022\003\020\003\019\000j\000\000\000\000\000Z\000\000\000Y\000\000\002\127\000\000\001\195\000X\000?\000\235\000`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\024\003\023\000\000\002\203\000\000\002\202\000\000\000\000\000\000\000\000\003$\000\000\000\000\000\000\003%\000\000\000\018\000\000\000\000\000\000\003 \000\000\001\139\000\000\000\000\000\000\000\168\002\193\001a\000\000\000\157\001`\001:\0019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\216\000\217\000\201\000\000\001o\000\000\000\000\000\200\000\196\000\000\000\203\000\197\000\202\000\000\002\205\000\000\002\204\002\190\000\000\000\000\000\000\000\000\000\000\002\199\000\000\000\000\000\000\000\000\000\000\002\200\002\192\000\000\002\206\000\000\002\194\000\000\000\172\000\000\002\209\000\156\000\000\001<\000\000\000\000\000\000\000\000\000\000\000\000\001\018\000\000\000w\000\000\000\000\000\000\002]\000\000\000\000\000\000\002e\000\000\000\000\002d\000\000\003\n\002c\002b\002a\002`\002_\002[\000\000\000\000\002\\\000\000\002^\000\000\000\000\000\000\000\000\000\000\000e\0028\000\000\000\000\002;\000\000\000\000\002>\000\000\000\000\0029\002<\000\000\002:\002=\002f\002Z\000f\003\007\003\008\003\006\003\005\003\t\000\000\000\000\000\000\000\000\000\211\000\210\000\000\000\000\000\000\000\000\001@\000\000\000\221\001=\000\000\000\209\001C\000\000\000\000\001D\000\000\000\000\001E\000\000\001m\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\000\000%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\001B\000\000\000\000\001H\000\000\000\000\000\000\000\000\000\000\000\000\000t\000q\000r\001I\001?\000\000\001>\000\000\000\188\000\000\002\169\000\000\000\000\000\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\191\000\000\000\000\000\194\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\000\000\000\181\000\000\000\178\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\185\000\000\000\000\002\230\000\000\002\237\000\174\000\000\000\000\000\000\000\000\000\186\000\000\000\182\000\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\190\000\000\000\000\000\193\000\000\002\231\000\173\000\000\002\232\000\000\002\239\000\000\000\000\000\000\000\000\000\192\000\000\000\176\000\000\000\000\000\000\000\000\001\015\000\000\000\000\000\000\000\180\000\000\000\177\000\000\000\000\000\000\000\000\000\000\000\187\000\000\000\183\000\170\000\169\000\000\002\240\002\241\000\000\002\242\000\000\002\243\000\000\001;\002\197\000\000\000\000\001\217\000\000\001\135\001\199\000\000\002\191\000\000\000\000\000\000\002\196\000\000\000\000\000\000\001\003\000\000\000\253\000\000\000\254\000\000\001\008\000\252\001\007\000\000\002\208\001\t\000\000\000\175\000\000\000\000\000\000\000\000\001\005\001\000\001\214\000\000\001\001\000\000\001\002\000\000\001\129\001\196\000\000\000\000\000\000\001\225\000\000\001\223\000\000\000\000\001\227\001\221\000\000\001\228\001\222\000\000\002\210\001\231\000\000\000\171\000\000\000\000\001\215\000\000\001\131\001\197\000\000\003!\000\000\003\030\000\000\003\031\000\019\000\020\000\000\000\000\002\151\000\000\002\150\000\000\000\000\002\153\000\000\002\152\000\000\000\000\000\000\002\002\000\000\000\000\002\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\t\000\000\000\000\002\012\000\000\000\000\001\252\000\000\000\000\001\255\000\000\000\000\000\000\002\003\000\000\000\000\002\007\000\000\000\000\001\216\000\000\000\000\002\000\000\000\000\000\002\004\002\148\001\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\008\000\000\000\000\002\011\000\000\002\149\000\000\000\000\000\000\000\000\002\n\000\000\001\250\000\000\001\251\000\000\000\000\001\254\000\000\000\000\000\000\002\001\000\000\000\000\002\005\000\000\001\133\001\198\000\000\002\154\000\000\000\000\000\000\003\"\000\017\000u\000\000\003#\000\000\000\000\002\165\000\000\000\000\002\211\000a\000\000\000\000\000\000\000b\000\000\002\201\000\000\001g\002\198\000\000\000\000\001T\000\000\001S\000\000\001\\\000\000\001y\000\000\000\000\000\000\001R\000\000\001Q\000\000\001Y\000\000\001w\000\000\000\000\000\000\001V\000\000\001U\000\000\001Z\000\000\001{\000\000\000\000\000\000\001W\000\000\000\000\000\000\000\000\001P\000\000\001O\000\000\001]\000\000\001u\000\000\000\000\000\000\001X\000\002\000\000\000N\000O\000\000\000\000\002\137\002\139\000\000\000\000\001\162\002\140\002\138\000\129\000\000\000\000\002\189\000\000\000\000\002\146\002\135\002\136\000\000\001\174\000M\001^\000\003\000\000\000\000\002\131\000\000\002\016\000\000\000\128\000\000\000\000\002\187\000\000\000\000\000\000\000z\000\000\000\000\002\175\000\000\001\245\001\244\001\157\002\144\000\000\001\190\000\000\002\132\000\000\000\000\000|\000\000\000\000\002\179\000\000\001\171\000\000\000\000\001\167\000\000\000\000\000\000\001\170\000\000\001\169\000\000\000\000\000\000\000\000\000\000\000\000\001\191\000\000\001\165\000\000\001\164\000\000\000v\000\000\000\000\002\167\000\000\000\000\001\161\000\000\000\000\000~\000\000\000\000\002\183\000\000\000\000\000\000\000{\000\000\000\000\002\177\000\000\001\241\001\240\001\153\002\142\000\000\001\177\000\000\000\000\000\000\001\173\000\000\001\179\000\000\000\000\001\168\000\000\000\000\001\175\000\000\000\000\001\176\000\000\000\000\000\000\000\000\000\000\000\000\001\192\000\000\001\166\000}\000\000\000\000\002\181\000\000\000\000\000\000\0014\000y\0013\000\000\000\000\002\173\000\000\001\239\001\238\001\151\002\141\000\000\000\127\000\000\000\000\002\185\000\000\000\000\000\000\000\000\001\243\001\242\001\155\002\143\000\000\001\184\000\000\001\188\000\000\000\000\001\180\000\000\000\000\000\000\001\172\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\001\187\001\160\000\000\001\186\000\000\000\000\000\000\000\000\001\183\000\000\000\000\001\182\000\000\001\181\000\000\000\000\000\000\000\000\001\185\000\000\001\189\000\000\000\000\001_\000\004\000\000\001\163\000\005\000\000\000\000\000\239\000\006\000\000\001\203\001\204\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000x\000\000\000\000\002\171\000\000\000\230\001\201\001\145\002\227\001\147\000\000\000\007\000\000\001\206\001\207\001\205\000\000\000\000\000\000\000\000\000\000\000\000\000\240\000\243\000\000\000\000\000\000\000\000\000\248\000\250\000\249\000\244\000\246\000\245\000\000\000\000\000\000\000\000\000\000\002\233\002\246\000\000\002\234\000\000\002\235\000\000\000\000\002\228\000\000\000\000\000\000\000\000\002\245\000\000\000\000\002\244\001\211\001\210\000\000\000\000\001\149\000\000\001\200\001\208\000\000\000\000\000\000\000\000\001\247\000\000\000\000\000l\000m\000\000\000\000\000\000\001\246\000\000\000\164\000\000\001i\000\000\000\000\000\163\000\159\000\000\000\000\000\000\000\000\001\014\000\000\000\000\002\249\000\000\002\250\000\000\000\000\001\234\001\232\000\000\001\233\000\008\000\000\000\t\000\000\002!\002\"\002 \000\000\000\000\002\031\000\000\000\n\000\000\002$\002%\002#\000\000\002'\000\000\000\000\000\000\002\025\000\000\000\000\002\027\000\000\002\021\000\000\002\023\000\000\002\028\000\000\002\029\002\022\002\020\002(\001\159\000\000\002\030\000\000\002*\000\000\002)\000\000\002+\000\000\002\147\000\011\000\000\000\000\000\000\000\000\000\000\000\000\002,\000\000\000\000\002/\000\000\002.\000\000\002-\000\204\000\000\000\000\000\000\000\000\000\205\0020\000\000\000\000\002\158\000\000\000\000\000\000\002\159\000\000\000\000\000\238\000\000\000\000\000\000\000\000\000\000\002\163\000k\000\000\000\000\000\213\000\000\000\000\000\233\000\232\000\231\000\000\001L\000\000\002\157\001\143\001\141\000\000\000\000\000\000\002\160\000\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\156\000\000\000\000\000\000\000\000\000\000\000\000\002\155\000\000\000\013\000\000\000\000\000\000\000\000\000\000\002\161") let error = - (171, "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\128\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\240\000\000\000\000\000\000\000=j\188\000 \004\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\008\003\008\000\001\012\192\140\002\000\128@\001\000\000\019!\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000/\209\192\004\001\132\000\004\134`F\001\000@!\000\128\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157C\000\016\006\016\000\018\025\129\024\004\001\000\132\002\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\2508\000\1280\128\000\144\204\008\192 \008\004 \016\000\0012\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\168`\002\000\194\000\002C0#\000\128 \016\128@\000\004\200b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\234\024\000\1280\128\000\144\204\008\192 \008\004 \016\000\0012\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001\000 \000\001\000\004\000\000\000\000\000\000\000\000\000\000\000\000\149C\000\016\006\016\000\019\025\129\024\004\001\000\132\002\000\000&C\023\173W\128\004\000\128\000\004\016\016\000\000\000\000\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000H\161\128\000\000\008\000\008\004\128\140\002\000\000B\001\000\000\019\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\t\000 \000\001\004\004\000\000\000\000\004\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\016\016\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000@\000\000\002\000\000\000\000\000\000\030\181^\000\016\002\000\000\016@@\000\000\000\000@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001\000 \000\001\004\004\000\000\000\000\004\000\001\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000@\000\008\000\000\000\000\000\000\000\002\000\000\136\000\000\000\000\000\005 \000$\026\005\001\157\160\000\"@ \016\001\008D\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@\000\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\000\008@ \128\000\000\000\005 \000$\026\005\001\157\160\000\"@ \016\001\008\004\016\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\002\000!\000\130z\213x\000T\136\000\144h\021\006v\128\000\137\000\128@\004 \016OZ\175\000\n\145\000\018\013\002\160\206\208\000\017 \016\008\000\132\002\008\000\000\000\000R\000\002A\160P\025\218\000\002$\002\000\000\016\128A=j\188\000*D\000H4\n\131;@\000D\128@ \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\002\000!\000\130\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\"0M\150K\000\000\020\001\004\000\003\186\002'\135p\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\021\"\000$\026\005A\159\160\000\"@ \016\001\t\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000@ \131\000\150\000\000(\000\000\000\007d\000M\014\224\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\004\128\001\016\130l\"X\000\000\160\008\000\000\029\144\001<;\128\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\001\016\130l\"X\000\000\160\008\000\000\025\144\001<\027\128\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\018\000\004B\t\176\137`\000\002\128 \000\000f@\004\240n\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\128\008@ \128\000\000H\000\017\008&\194%\128\000\n\000\128\000\001\153\000\019\193\184\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\002\000!\000\130\000\000\001 \000D \155\008\150\000\000(\002\000\000\006d\000O\006\224\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\128\008@ \128\000\000H\000\017\008&\194%\128\000\n\000\128\000\001\153\000\019\193\184\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\002\000!\000\130\000\000\001 \000D \155\008\150\000\000(\002\000\000\006d\000O\006\224\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\004\128\001\016\130l\"X\000\000\160\008\000\000\025\144\001<\027\128\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\018\000\004B\t\176\137`\000\002\128 \000\000f@\004\240n\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\128\008@ \128\000\000H\000\017\008&\194%\128\000\n\000\128\000\001\153\000\019\193\184\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\003\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\002\000!\000\130\000\000\001 \000D \155\008\150\000\000(\002\000\000\006d\000O\006\224\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\004\128\001\016\130l\"X\000\000\160\008\000\000\025\144\001<\027\128\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\018\000\004B\t\176\137`\000\002\128 \000\000f@\004\240n\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\006\000\000\002\025\000\000\000\001\000\128\002\000\000&@\016\018\168`\002\000\194\000\002C0#\000\128 \016\128@\000\004\200b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\173V\128\004\000\128\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000a\000\000!\144\017\128@\016\008\000 \000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\128\001\235U\224\001R \002A\160T\025\250\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008\144\008\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\001H\000\t\006\129@gh\000\008\144\008\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@\000\002\016\008 \000\000\000\001H\000\t\006\129@gh\000\008\144\008\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\005\001\157\160\000\"@ \000\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128\000\004 \016@\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\000\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\004D\008\178I@\000\002\000 \128\0005@D0\142\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\214\171\192\002\164@\004\131@\1683\244\000\004H\004\002\000! \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\160P\025\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000D\000\139\000\148\000\000 \002\000\000\003D\000C\008\224\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000@\000\002\000\000\000\000\000B\144\000\018\013\002\128\206\208\000\017 \016\000\000\132\002\008\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\000\000!\000\130\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000@\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\017\000\"\192%\000\000\008\000\128\000\000\145\000\016\1928\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\000\000!\000\130\000\000\001 \000D\000\139\000\148\000\000 \002\000\000\002D\000C\000\224\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\000\000\132\002\008\000\000\004\128\001\016\002,\002P\000\000\128\008\000\000\t\016\001\012\003\128\000\000\000\n@\000H4\n\003;@\000D\128@\000\002\016\008 \000\000\018\000\004@\008\176\t@\000\002\000 \000\000$@\0040\014\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\000\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\000\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\000\000\132\002\008\000\000\004\128\001\016\002,\002P\000\000\128\008\000\000\t\016\001\012\003\128\000\000\000\n@\000H4\n\003;@\000D\128@\000\002\016\008 \000\000\018\000\004@\008\176\t@\000\002\000 \000\000$@\0040\014\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\000\008@ \128\000\000H\000\017\000\"\192%\000\000\008\000\128\000\000\145\000\016\1928\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\000\000!\000\130\000\000\001 \000D\000\139\000\148\000\000 \002\000\000\002D\000C\000\224\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\000\000\132\002\008\000\000\004\128\001\016\002,\002P\000\000\128\008\000\000\t\016\001\012\003\128\000\000\000\n@\000H4\n\003;@\000D\128@0\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\000\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\000\000!\000\130\000\000\001 \000D\000\139\000\148\000\000 \002\000\000\002D\000C\000\224\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\000\000\132\002\008\000\000\004\128\001\016\002,\002P\000\000\128\008\000\000\t\016\001\012\003\128\000\000\000\n@\000H4\n\003;@\000D\128@\000\002\016\008 \000\000\018\000\004@\008\176\t@\000\002\000 \000\000$@\0040\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000R\000\002A\160P\025\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000@\000z\213x\000@\008\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\005 \000$\026\005\001\157\160\000\"@ \016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001R \002A\160T\025\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000T\136\000\144h\021\006v\128\000\137\000\128@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000 \000\000\000\000\000\000\000\008\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\145C\000\000\000\016\000\016\t\001\024\004\000\000\132\002\000\000&\003\016\018(`\000\000\002\000\002\000 #\000\128\000\016\128@\000\004\192b\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001\000 \000\001\000\004`\000\000\000\000\000\001\000\000\016\000\000\000\000\000\000\000\000\000\016\008\000\000\000\000\000\000\000\000\000\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\003\214\171\192\002\000@\000\002\000\008\192\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\008\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\003\214\171\192\002\000@\000\002\000\008\192\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\015Z\175\000\008\001\000\000\008\000#\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\004@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000 \004\000\000 \000\140\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\016\016\000\000\000\000\016\000\000\000\000\008\000\245\170\240\000\128\016\000\000\130\002\000\000\000\000\002\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\235U\160\001\000 \000\000\000\004\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tT0\001\000a\000\0011\152\017\128@\016\008@ \000\002d1z\213x\000@\008\000\000A\001\000\000\000\000\001\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\016\000\000\000\000\000\000\001z\213x\000@\008\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001\000 \000\001\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\\\137\000\128c\021\199w\132\001\189A\128\008\214 P@$P\192\000\000\000\000\004\002\000F\000\000\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000 \004\000\000 \000\140\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\214\171\192\002\000@\000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001P \000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000*\004\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\181Z\000\016\002\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000@r\004\002\001\136Q\029\218\016\006\245\006\000#\024\129A\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008\144\008\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\015\254\191\130\011\145 \018\013B\184\238\240\1287\1680\t\030\198\026\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000@0\n\003;@\000\196\128@\000\002\016\008 \000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\245\170\240\000\169\016\001 \208*\012\237\000\001\018\001\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\002\144\000\016\012\002\128\206\208\0001 \016\000\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\016\012\002\128\206\208\0001 \016\000\000\132\002\008\000\000\000\000R\000\002A\160P\025\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\016\000\000\000\000\164\000\004\003\000\1603\180\000\012H\004\000\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\001\017\130l\178X\000\000\160\008 \000\029P\016(;\128\000\000\000\000\000\000\000\000\000\000\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\169\016\001 \208*\012\253\000\001\018\001\000\128\008H \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\017\008&\194%\128\000\n\000\128\000\001\209\000\002\131\184\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\"\016M\132K\000\000\020\001\000\000\003\"\000\005\003p\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\002@\000\136A6\017,\000\000P\004\000\000\012\136\000\020\013\192\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\016\000\000\t\000\002!\004\216D\176\000\001@\016\000\0002 \000P7\000\000\000\000\020\128\000\128`\020\006v\128\001\137\000\128\000\004 \016@\000\000$\000\008\132\019a\018\192\000\005\000@\000\000\200\128\001@\220\000\000\000\000R\000\002\001\128P\025\218\000\006$\002\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\016\000\000\t\000\002!\004\216D\176\000\001@\016\000\0002 \000P7\000\000\000\000\020\128\000\128`\020\006v\128\001\137\000\128\000\004 \016@\000\000$\000\008\132\019a\018\192\000\005\000@\000\000\200\128\001@\220\000\000\000\000R\000\002\001\128P\025\218\000\006$\002\000\000\016\128A\000\000\000\144\000\"\016M\132K\000\000\020\001\000\000\003\"\000\005\003p\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\002@\000\136A6\017,\000\000P\004\000\000\012\136\000\020\013\192\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\016\000\000\t\000\002!\004\216D\176\000\001@\016\000\0002 \000P7\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128`\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000R\000\002\001\128P\025\218\000\006$\002\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\002@\000\136A6\017,\000\000P\004\000\000\012\136\000\020\013\192\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\016\000\000\t\000\002!\004\216D\176\000\001@\016\000\0002 \000P7\000\000\000\000\020\128\000\128`\020\006v\128\001\137\000\128\000\004 \016@\000\000$\000\008\132\019a\018\192\000\005\000@\000\000\200\128\001@\221\235U\224\001R \002A\160T\025\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \008$\026\005\001\157\160\000\"@ \016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\215\240yr$\002\001\140W\029\222\016\006\245\006\000#X\129A\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008\144\008\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000@\000\000\000\000\000\001\008\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 \185\018\001\000\196+\142\239\008\003z\131\000\017\172@\160\159\253\127\004\023\"@$\026\133\241\221\225\000oP`\0185\138\020\019\255\175\224\242\228H\004\003\024\174;\188 \013\234\012\000F\177\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\255\195\203\145 \016\012b\248\238\241\1287\1690\129\030\199\026\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128@1\138\227\187\194\000\222\160\192\004k\016('\255_\193\005\200\144\t\006\161|wx@\027\212\024\004\141b\133\004\255\235\248 \185\018\001 \212+\142\239\008\003z\131\000\145\172A\160\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\008\140\019e\146\192\000\005\000A\000\000\238\128\137A\220\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004H\004\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\002\003\144 \016\012B\136\238\208\1287\1680\001\024\196\n\008\000\000\000@r\004\002\001\136Q\029\218\016\006\245\006\000#\024\129A\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\001\004\131@\1603\180\000\004H\004\002\000!\000\130\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\004\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@ \002\018\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000 9\002\001\000\196(\142\237\008\003z\131\000\017\140@\160\128\000\000\004\007 @ \024\133\017\221\161\000oP`\0021\136\020\016\000\000\000\000\000\000\000\000\000\000\001\000\000\000\008\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000 \000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000 \000\000\001\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\005\001\157\160\000\"@ \016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\001\001\130\012\146X\000\000\128\000 \000\012\208\017 #\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\005H\128\t\006\129Pg\232\000\008\144\008\004\000BA\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\004\007 @ \024\133\017\221\161\000oP`\0021\136\020\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 \185\018\001 \212+\142\239\008\003z\131\000\145\172@\160\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\191\240\242\228H\004\003\024\190;\188`\013\234L G\177\198\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\000\016\000\000\000\000\016\000\000\000\000\000\000\002E\012\000\000\000\000\000@ \004`\000\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\003\214\171\192\002\000@\000\002\000\008\192\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\002\000\000\128\000\000\000\000\000\005 \000$\026\133\001\189\160\000\"@ \016\001\008\004\016\000\000\000\000\164\000\004\0030\1603\180\000\012H\004\n\128!\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\016\012\002\128\206\208\0001 \016\000\000\132\002\008\000\000\000\000R\000\002A\160P\025\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\169\016\001 \208*\012\237\000\001\018\001\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\128`\020\006v\128\001\137\000\128\000\004 \016@\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000@0\n\003;@\000\196\128@\000\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001\000\192(\012\237\000\003\018\001\000\000\008@ \128\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\019\214\171\192\002\164@\004\131@\1683\180\000\004H\004\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\002\144\000\016\012\002\128\206\208\0001 \016\000\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\004\004\0082I@\000\002\000\000\128\000!@D\000\012\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\214\171\192\002\164@\004\131@\1683\244\000\004H\004\002\000! \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\160P\025\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\000\000\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\0030\1603\180\000\012H\004\n\128!\004\130\000\000\000\002\020\128\000\128f\020\006v\128\001\137\000\129P\004 \144@\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\168P\027\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\n@\000@3\n\003;@\000\196\128@\136\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\005 \000 \025\133\001\157\160\000b@ D\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000 \000A\128J\000\000\016\000\000\000\001\002\000 \000`\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\002\000\000\128\001\006\001(\000\000@\000\000\000\004\008\000\128\001\128\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\016\000\000\008\000\002\000\004\024\004\160\000\001\000\000\000\000\016 \002\000\006\000\000\000\000\020\128\000\128`\020\006v\128\001\137\000\128\000\004 \016@\000\000 \000\008\000\016`\018\128\000\004\000\000\000\000@\128\008\000\024\000\000\000\000R\000\002\001\128P\025\218\000\006$\002\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\016\000\000\008\000\002\000\004\024\004\160\000\001\000\000\000\000\016 \002\000\006\000\000\000\000\020\128\000\128`\020\006v\128\001\137\000\128\000\004 \016@\000\000 \000\008\000\016`\018\128\000\004\000\000\000\000@\128\008\000\024\000\000\000\000R\000\002\001\128P\025\218\000\006$\002\000\000\016\128A\000\000\000\128\000 \000A\128J\000\000\016\000\000\000\001\002\000 \000`\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\002\000\000\128\001\006\001(\000\000@\000\000\000\004\008\000\128\001\128\000\000\000\005 \000 \024\005\001\157\160\000b@ \000\001\008\004\016\000\000\008\000\002\000\004\024\004\160\000\001\000\000\000\000\016 \002\000\006\000\000\000\000\020\128\000\128`\020\006v\128\001\137\000\128\000\004 \016@\000\000 \000\008\000\016`\018\128\000\004\000\000\000\000@\128\008\000\024\000\000\000\000R\000\002\001\128P\025\218\000\006$\002\000\000\016\128A\000\000\000\128\000 \000A\128J\000\000\016\000\000\000\001\002\000 \000`\000\000\000\001H\000\008\006\001@gh\000\024\144\008\000\000B\001\004\000\000\002\000\000\128\001\006\001(\000\000@\000\000\000\004\008\000\128\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000R\000\002\001\152P\025\218\000\006$\002\005@\016\130A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006a@gh\000\024\144\008\021\000B\t\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\005 \000 \025\133\001\157\160\000b@ T\001\008$\016\000\000\000\000\164\000\004\0030\1603\180\000\012H\004\008\128!\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\002\144\000\016\012\194\128\206\208\0001 \016*\000\132\018\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\128\016\000\000\128\0020\000\000\000\000\000\000\128\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013B\128\222\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000@\000H\000\000\000\000\000\000\000\002\000\000\128\000\000\000\000\000\000\000\008\000\t\000\000\000\000\000\000\000\000@\000\016\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000@\008\000\000@\001\024\000\000\000\000\000\000@\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\016\000\004\000\000\000\000\000\000)\000\001 \212(\013\237\000\001\018\001\000\128\008@ \128\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\235U\160\001\000 \000\000\000\004\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\016\000\004\000\000\000\000\000\000)\000\001 \212(\013\237\000\001\018\001\000\128\008@ \128\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\215\240Ar$\002\001\140W\029\2220\006\245\006\000#X\129A\000\000\000\000\000\000\000\008\004\000\000\000\004\000\000\000\002 \000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 \185\018\001\000\198+\142\239\024\003z\131\008\017\172@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000D`\155,\150\000 (\002\t\000\007t\004\n\014\224\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000 \000\008\000\000\000\000\000\000R\000\002A\168P\027\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\128\016\000\000\128\0020\000\000\000\000\000\000\128\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013B\128\222\208\000\017 \016\008\000\132\002\008\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\128\000\000\000\128\000\000\000D\000\000\000b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\175\224\130\228H\004\131P\174;\188`\013\234\012\"F\177\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\191\130\011\145 \016\012b\184\238\241\1287\1680\129\026\196\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\005H\128\t\006\129Pg\232\000\008\144\008\004\000BA\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0020\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000 \004\000\000 \000\140\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\008\000\002\000\000\000\000\000\000\020\128\000\144j\020\006\246\128\000\137\000\128@\004 \016@\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\170\208\000\128\016\000\000\000\002\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\008\000\002\000\000\000\000\000\000\020\128\000\144j\020\006\246\128\000\137\000\128@\004 \016@\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\175\224\130\228H\004\131P\174;\188`\013\234\012\"F\177\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128@ \000\000\000 \000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255_\193\005\200\144\t\006\161\\wx\192\027\212\024\004\141b\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\140\002\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\001\000\000\000\000\000@r\004\002\001\136Q\029\218\016\006\245\006\000#\024\129A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000@\000\000\000\000\000\000\000\000\001\000\001\255\223\248Ar4\002a\168_\029\2220\014\245&\019#\216\235Y\128\000\000\008\014@\128@1\n#\187B\000\222\160\192\004c\016( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 \185\018\001\000\198/\142\239\008\003z\131\000\017\236q\160\128\000\000\000\000\000\000\004\002\000\000\000\000\000\000\000\000\016\000\000\000\003\255\175\224\130\228H\004\003\024\190;\188 \013\234\012\000G\177\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002\001\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128H5\011\227\187\194\000\222\160\192${\028h \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 \185\018\001 \212/\142\239\008\003z\131\000\145\236q\160\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\003\255\175\224\130\228H\004\003\024\190;\188 \013\234\012\000F\177B\130\000\000\000\000\000\000\000\016\008\002\000\000\000\000\000\000\000@\000\008\000\015\254\191\130\011\145 \016\012b\248\238\240\1287\1680\001\026\197\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@ \016\004\000\000\000\000\000\000\000\128\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\175\224\130\228H\004\131P\190;\188 \013\234\012\002F\177B\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000 #\000\000\000\016\000\000\000\000\128\000\000\000\000\000\000\008\0000\016\000\000\000\000\004\000\000\000\128\000\004\000_\253\127\004\023\"@ \024\197q\221\225\000oP`\0025\136\020\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004 \024\008\000\000\000\000\002\000\000\000@\000\002\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\215\240Ar4\002a\168W\029\222\016\014\245\006\001#X\137A\191\250\254\008.D\128@1\138\227\187\194\000\222\160\192\004k\016( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\023#@&\026\133q\221\225\000\239P`\0185\136\148\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\003\255\175\224\130\228H\004\131P\190;\188 \013\234\012\002F\177B\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\004\002\000\000\000\002\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\\\137\000\144j\021\199w\140\001\189A\128H\214 P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\191_\192\005H\144\008\006\001Pgx\000\024\144\008\000\001b\005\004\000\000\000\000)\000A \208(\012\237\000\001\018\001\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015~\191\128\n\145 \016\012\002\160\206\240\0001 \016\000\002\196\n\008\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\016\002\000\000\016\000@\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\168P\027\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001\000 \000\001\000\004`\000\000\000\000\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\133\001\189\160\000\"@ \016\001\008\004\016\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000F\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\161@oh\000\008\144\008\004\000B\001\004\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\171@\002\000@\000\000\000\008\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H5\n\003{@\000D\128@ \002\016\008 \000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\003\223\175\224\002\164H\004\003\000\1683\188\000\012H\004\000\000\177\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\008\012\016d\146\192\004\004\000\001 \000b\128\129\001\024\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\161@oh\000\008\144\008\004\000B\001\004\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\016\002\000\000\016\000F\000\000\000\000\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\168P\027\218\000\002$\002\001\000\016\128A\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000T\136\000\144h\021\006~\128\000\137\000\128@\004$\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144j\020\006\246\128\000\137\000\128@\004 \016@\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\029j\180\000 \004\000\000\000\000\128\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131P\1607\180\000\004H\004\002\000!\000\130\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000 \000\000\002\0020\000\000\001\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\002\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\002\016\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\215\240Ar$\002\001\140W\029\222\016\006\245\006\000#X\129A\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\005\001\157\160\000\"@ \016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\127\245\252\016\\\137\000\144j\021\199w\132\001\189A\128H\2460\208@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\016\000\000\000\000\000\000\001\127\245\252\016\\\137\000\128c\021\199w\132\001\189A\128\008\214 P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\215\240Ar$\002\001\140W\029\222\016\006\245\006\000#X\129A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128\000\004 \016@\000\000\000\000\000\128\000\000\000\000\000\000\000@\000\000\000\000\000\000\004\000\000\000\000R\000\002A\160P\025\218\000\002$\002\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008\144\008\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@r\004\002\001\136Q\029\218\016\006\245\006\000#\024\129A\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\016\000\000\001\001\200\016\008\006!Dwh@\027\212\024\000\140b\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\007 @ \024\133\017\221\161\000oP`\0021\136\020\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008\144\008\000\000B\001\004\000\000\000\000\000\008\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000@\008\000\000@\001\000\001\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\191\250\254\000 \004\000\000 \000\128\000\128\000\000\128\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248\000\128\016\000\000\128\002\000\002\000\000\002\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000@\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@\000\002\016\008 \000\000\000\000\000@\000\000\000\000\000\000\000 \000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x@\225\008\137 B\001\000\000\018\000B\148$\000\t\128 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\0008B\"\008\016\128@\000\004\128\016\165\t\000\002`\000\003\214\171\192\007\008@\001\002\016\008\000\000\144\002\020\161 \000L\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\001\000\128\000\004\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\004\000\000\000\016\000\000\000\000\000\128\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\004\000\000\000\016\000\000@\016\000\000\000@\000\000\000\000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\002\000\000\000\000\000\000\002\000\000\000\000\000\000\000\008\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 @\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\214\171\192\007\008D\001\002\016\008\000\000\144\002\020\161 \000D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\028!\000\004\008@ \000\002@\008R\132\128\001\016\000\000\000 \000\000\128 \000\000\000\128\000\000\000\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\004\000\000\000\016\000\000@\016\000\000\000@\000\000\000\000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\128\000\000\002\000\000\000\000\000\016\000@\000\000\000\000\000\016\000\000@\016\000\000\000@\000\000\128\000\002\000\008\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\128 \000\000\000\128\000\000\000\000\004\000\016\000\000\000\000\000\004\000\000\016\004\000\000\002\016\000\000 \000\000\128\002\000\000 \000\000\000\128\000\002\000\128\000\000\002\000\000\000\000\000\016\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\002\000\000\008\002\000\000\000\008\000\000\000\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\128\016\000\000\128\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000z\213x\000@\008\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\004\000\000\016\004\000\000\002\024\000\000\000\000\000\128\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\002\000\000\008\002\000\000\000\008\000\000\000\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000@\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000 \000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\017\128\000\002\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000 \000\128\000\000\000\000\000 \000\000\128 \000\000\002\128\000\001\000\000\004\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000@\000\000\001\000\000\000\000\000\008\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\128 \000\000\000\128\000\000\000\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000@\016\000\000\000@\000\000\000\000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\128\000\000\003\000\000\000\000\000\016\000@\000\000\000\000\000\016\000\000@\016\000\000\t@\000\000\128\000\002\000\008\000\000\128\000\000\002\000\000\008\002\000\000\000\008\000\000\000\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\008\000\000 \008\000\000\000 \000\000\000\000\001\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\016\000\000\000@\000\001\000@\000\000\001\000\000\000\000\000\008\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\008\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000@\000\000\001\000\000\000\000\000\008\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\008\000\000\000 \000\000\128 \000\000\000\128\000\000\000\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\004\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000 \008\000\000\000 \000\000\000\000\001\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\004\000\000\000\016\000\000\000\000\000\128\002\000\000\000\000\000\000\128\000\002\000\128\000\000\n\000\000\004\000\000\016\000@\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015[\175\000\012\001\000\000\008D \000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\128\000\002\000\128\000\000\011\000\000\004\000\000\016\000@\000\004\000\000\000\016\000\000@\016\000\000\000@\000\000\000\000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\007\173\215\128\006\000\128\000\004#\016\000\000\000\000\016\000@\000\000\000\000\000\016\000\000@\016\000\000\000@\000\000\000\000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000 \008\000\000\000 \000\000\000\000\001\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000@\016\000\000\008@\000\000\000\000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000@\000\001\000@\000\000\001\000\000\000\000\000\008\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x@\225\008\137 B\001\000\000\018\000B\148$\000\t\128 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\014\003;@\000D\128@ \002\016\008 \000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000D\128@ \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000b\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\137\000\128\000\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\004\000\000\000\000\000\n@\000H4\n\003;@\000D\128@\000\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\251\255\008.D\128H=\014\227\187\194\000\222\164\194$k\016+0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\255\194\011\145 \018\015B\184\238\240\1287\1690\137\026\196\n\204\239\223\184\001\000 \000\000\000\004\000\000\000\000\000 \000\000\000\000\000\000\145C\000\000\000\000\000\000\008\000\000\000\000\000\004\000\000\000\000\000\003\191~\224\004\000\128\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000w\239\220\000\128\016\000\000\000\002\000\000\000\000\000\016\000\000\000\000\000\000H\161\128\000\000\000\000\000\004\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$P\192\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\004\138\024\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\145C\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\018(`\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\015.D\128@1\138\227\187\194\000\222\160\192\004k\016('\255_\193\005\200\144\008\0061\\wx@\027\212\024\000\141b\005\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\023\"@ \024\197q\221\225\000oPa\0025\136\021\152\000\000\000\000\000\000\000\128@\000\000\000\000\000\000\000\"\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128@ \000\000\000\000\000\000\000\017\000\000\000\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255_\193\005\200\144\t\006\161\\wx@\027\212\024D\141b\005f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000 \025\133\001\157\160\000b@ T\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\191\131\203\145 \016\012b\184\238\240\1287\1680\001\026\196\n\t\255\215\240Ar$\002\001\140W\029\222\016\006\245\006\000#X\129A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\007\255_\193\005\200\144\008\0061\\wx@\027\212\024@\141b\005f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\007\151\"@ \024\197q\221\225\000oP`\0025\136\020\019\255\175\224\130\228H\004\003\024\174;\188 \013\234\012\000F\177\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=\251\255\000 \004\000\000 \000\128\000\000\000\000\132\000\000\000\000\000\000\018(`\000\000\000\000\002\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\192\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\000\017\128\000\000\000\000\000\004\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\003\214\171\192\002\000@\000\002\000\008\192\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000=j\188\000 \004\000\000 \000\140\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\\\137\000\144j\021\199w\132\001\189A\128H\214 \208@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\145C\000\000\000\000\000\016\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\002\001\000\128\000\000\000\000\000\000\000D\000\000\000b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\023\"@$\026\133q\221\225\000oPa\0185\136\021\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0020\000\000\001\000\004\000\000\000\006 \000\000\000\000\004\002\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\2243\180\000\004H\004\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\018\001\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\\\137\000\144z\029\199w\132\001\189I\132H\214 V`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\255\132\023\"@$\030\133q\221\225\000oRa\0185\136\021\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\\\137\000\128c\021\199w\132\001\189I\132\008\214 V`\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\000\136\000\000\000\197\255\223\248Ar$\002\001\140W\029\222\016\006\245&\016#X\129Y\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255\127\225\005\200\144\t\006\161\\wx@\027\212\152D\141b\005f\255\239\252 \185\018\001\000\198+\142\239\008\003z\147\008\017\172@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\"\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\255\194\011\145 \018\013B\184\238\240\1287\1690\137\026\196\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\251\255\008.D\128H5\n\227\187\194\000\222\164\194$k\016+0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\239\252 \185\018\001 \212+\142\239\008\003z\147\008\145\172@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\239\252 \185\018\001 \212+\142\239\008\003z\147\008\145\172@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\"\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\255\194\011\145 \018\013B\184\238\240\1287\1690\137\026\196\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\001\024\000\000\000\128\002\000\000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\004\128\000\000\000\000\000\000\000\000H\156\000\192\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000@\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016 \000\000\000\000\000\000\004\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000@\128\000\000\000\000\000\000\016\000\000\000 \000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\008\001\000\000\000\000\000\002\000\000\008\016\000\000\000\000\000\000\002\000\000\000\004\000\000\000\000\008\000\016\000\016\000\000\000\000\000\000\000\017\128\016\000 \020\000\000\000\000\000\008\000\000 @\000\000\000\000\000\000\008\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\001\000\001\000\000\000\000\000\000\000\001\024\001\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\128\000\000\000\000\000\000\000\000\000\156\000\192\000\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000@\000\000\000\000\000\000\000\000\000F\000`\000\000@\000\000\000\004\000\008\000\000\000\000\000\000\000\000\000\008\192\008\000\000\008\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000#\000 \004\000 \000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\0020\002\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\001\024\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\019\128\024\000\000\016\000\000\000\001\000\002\000\000\000\000\000\000\000\000\000\0020\003\000\000\002\000\000\000\000 \000@\000\000\000\000\000\000\000\000\000F\000@\000\000@\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\008\192\008\000\000\008\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\001\024\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\017\128\024\000\000\016\000\000\000\001\000\002\000\000\000\000\000\000\000\000\000\0020\002\000\000\002\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000F\000@\000\000@\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\008\192\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (173, "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\000\000\000\000\000\000\000\000\245\170\240\000\128\016\000\000\128\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\1280\128\000\016\204\008\192 \008\002\000\004\000\000L\134 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\244p\001\000a\000\001!\152\017\128@\016\004 \008\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002u\012\000@\024@\000Hf\004`\016\004\001\008\002\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000_\163\128\008\003\008\000\t\012\192\140\002\000\128!\000@\000\004\200b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\168`\002\000\194\000\002C0#\000\128 \008@\016\000\0012\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000N\161\128\008\003\008\000\t\012\192\140\002\000\128!\000@\000\004\200b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\016\002\000\000\016\000@\000\000\000\000\000\000\000\000\000\000\000\002U\012\000@\024@\000Lf\004`\016\004\001\008\002\000\000&C\023\173W\128\004\000\128\000\004\016\016\000\000\000\000\008\000\001\000\000\000\000\000\000\000\000\000\000\000\000\016\008\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\000\128\000\128H\008\192 \000\002\016\004\000\000L\006 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\144\002\000\000\016@@\000\000\000\000 \000\000\000\000\008\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\016\016\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\016\000\000\000@\000\000\000\000\000\001\235U\224\001\000 \000\001\004\004\000\000\000\000\002\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\016\002\000\000\016@@\000\000\000\000 \000\004\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\016\000\002\000\000\000\000\000\000\000\000 \000\008\128\000\000\000\000\000R\000\002A\160P\025\218\000\002\018\001\000@\004!\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128\000\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000B@ \000\000\132\002\008\000\000\000\000R\000\002A\160P\025\218\000\002\018\001\000@\004 \016@\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\002\000!\000\130z\213x\000T\136\000\144h\021\006v\128\000\132\128@\016\001\008\004\019\214\171\192\002\164@\004\131@\1683\180\000\004$\002\000\128\008@ \128\000\000\000\005 \000$\026\005\001\157\160\000! \016\000\000B\001\004\245\170\240\000\169\016\001 \208*\012\237\000\001\t\000\128 \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\002\000!\000\130\000\000\000\000\020\128\000\144h\020\006v\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000B@ \008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\136\1936Y,\000\000P\004\008\000\003\186\002'\135p\000\000\000\000\000\000\000\000\000\000\002\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001R \002A\160T\025\250\000\002\018\001\000@\004$\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000@ \131\000\150\000\000(\000\000\000\001\217\000\019C\184\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000H\000\017\008&\194%\128\000\n\000\128\000\000v@\004\240\238\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\017\008&\194%\128\000\n\000\128\000\000f@\004\240n\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\018\000\004B\t\176\137`\000\002\128 \000\000\025\144\001<\027\128\000\000\000\n@\000H4\n\003;@\000B@ \008\000\132\002\008\000\000\004\128\001\016\130l\"X\000\000\160\008\000\000\006d\000O\006\224\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\002\000!\000\130\000\000\001 \000D \155\008\150\000\000(\002\000\000\001\153\000\019\193\184\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000H4\n\003;@\000B@ \008\000\132\002\008\000\000\004\128\001\016\130l\"X\000\000\160\008\000\000\006d\000O\006\224\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\002\000!\000\130\000\000\001 \000D \155\008\150\000\000(\002\000\000\001\153\000\019\193\184\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000H\000\017\008&\194%\128\000\n\000\128\000\000f@\004\240n\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\018\000\004B\t\176\137`\000\002\128 \000\000\025\144\001<\027\128\000\000\000\n@\000H4\n\003;@\000B@ \008\000\132\002\008\000\000\004\128\001\016\130l\"X\000\000\160\008\000\000\006d\000O\006\224\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\003\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\002\000!\000\130\000\000\001 \000D \155\008\150\000\000(\002\000\000\001\153\000\019\193\184\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000H\000\017\008&\194%\128\000\n\000\128\000\000f@\004\240n\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\018\000\004B\t\176\137`\000\002\128 \000\000\025\144\001<\027\128\000\000\000\n@\000H4\n\003;@\000B@ \008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000@\024\000\000\008d\000\000\000\004\001\000\002\000\000&@\016\018\168`\002\000\194\000\002C0#\000\128 \008@\016\000\0012\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\173V\128\004\000\128\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\001\132\000\000\134@F\001\000@\016\000 \000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\030\181^\000\021\"\000$\026\005A\159\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008H\004\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\001H\000\t\006\129@gh\000\008H\004\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128\000\002\016\008 \000\000\000\001H\000\t\006\129@gh\000\008H\004\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\160P\025\218\000\002\018\001\000\000\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\132\128@\000\001\008\004\016\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\000\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\004D\008\178I@\000\002\000 @\000\013P\017\012#\128\000\000\000\000\000\000\000\000\000\000\016\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\n\145\000\018\013\002\160\207\208\000\016\144\008\002\000! \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\005\001\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000D\000\139\000\148\000\000 \002\000\000\000\209\000\016\1948\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\016\000\000\128\000\000\000\000\016\164\000\004\131@\1603\180\000\004$\002\000\000\008@ \128\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\000\000!\000\130\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\001\016\002,\002P\000\000\128\008\000\000\002D\000C\000\224\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\000\000!\000\130\000\000\001 \000D\000\139\000\148\000\000 \002\000\000\000\145\000\016\1928\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\000\008@ \128\000\000H\000\017\000\"\192%\000\000\008\000\128\000\000$@\0040\014\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128\000\002\016\008 \000\000\018\000\004@\008\176\t@\000\002\000 \000\000\t\016\001\012\003\128\000\000\000\n@\000H4\n\003;@\000B@ \000\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\000\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\000\008@ \128\000\000H\000\017\000\"\192%\000\000\008\000\128\000\000$@\0040\014\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128\000\002\016\008 \000\000\018\000\004@\008\176\t@\000\002\000 \000\000\t\016\001\012\003\128\000\000\000\n@\000H4\n\003;@\000B@ \000\000\132\002\008\000\000\004\128\001\016\002,\002P\000\000\128\008\000\000\002D\000C\000\224\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\000\000!\000\130\000\000\001 \000D\000\139\000\148\000\000 \002\000\000\000\145\000\016\1928\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\000\008@ \128\000\000H\000\017\000\"\192%\000\000\008\000\128\000\000$@\0040\014\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\1280\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\n@\000H4\n\003;@\000B@ \000\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\000\000!\000\130\000\000\001 \000D\000\139\000\148\000\000 \002\000\000\000\145\000\016\1928\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\000\008@ \128\000\000H\000\017\000\"\192%\000\000\008\000\128\000\000$@\0040\014\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128\000\002\016\008 \000\000\018\000\004@\008\176\t@\000\002\000 \000\000\t\016\001\012\003\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\005 \000$\026\005\001\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000@\000z\213x\000@\008\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000R\000\002A\160P\025\218\000\002\018\001\000@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\021\"\000$\026\005A\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000T\136\000\144h\021\006v\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\128\000\000\000\000\000\000\000\008\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\012\000\000\000@\000@$\004`\016\000\001\008\002\000\000&\003\016\018(`\000\000\002\000\002\000 #\000\128\000\008@\016\000\0010\024\128\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\016\002\000\000\016\000F\000\000\000\000\000\000\004\000\000@\000\000\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\015Z\175\000\008\001\000\000\008\000#\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000@\000\000\000\000\128\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\008\001\000\000\008\000#\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\003\214\171\192\002\000@\000\002\000\008\192\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\008\000\000\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\128\016\000\000\128\0020\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\016\016\000\000\000\000\008\000\000\000\000\002\000=j\188\000 \004\000\000 \128\128\000\000\000\000@\000\008\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\181Z\000\016\002\000\000\000\000@\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000%P\192\004\001\132\000\004\198`F\001\000@\016\128 \000\002d1z\213x\000@\008\000\000A\001\000\000\000\000\000\128\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000@\000\000\000\000\000\000\001z\213x\000@\008\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\016\002\000\000\016\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\\\137\000\128c\021\199w\132\001\158\160\192\0025\136\020\016\t\0200\000\000\000\000\001\000\128\017\128\000\000\004 \000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\128\016\000\000\128\0020\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\008\001\000\000\008\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\002\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\168\016\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\235U\160\001\000 \000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\004\007 @ \024\133\017\221\161\000g\1680\000\140b\005\004\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008H\004\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\003\255\175\224\130\228H\004\131P\174;\188 \012\245\006\000\145\236a\160\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001\000\192(\012\237\000\003\t\000\128\000\002\016\008 \000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A=j\188\000*D\000H4\n\131;@\000B@ \008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\164\000\004\003\000\1603\180\000\012$\002\000\000\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\003\000\1603\180\000\012$\002\000\000\008@ \128\000\000\000\005 \000$\026\005\001\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016@\000\000\000\002\144\000\016\012\002\128\206\208\0000\144\008\000\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\017\024&\203%\128\000\n\000\129\000\000u@@\160\238\000\000\000\000\000\000\000\000\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000*D\000H4\n\131?@\000B@ \008\000\132\130\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\001\016\130l\"X\000\000\160\008\000\000\007D\000\n\014\224\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\136A6\017,\000\000P\004\000\000\003\"\000\005\003p\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\144\000\"\016M\132K\000\000\020\001\000\000\000\200\128\001@\220\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016@\000\000$\000\008\132\019a\018\192\000\005\000@\000\0002 \000P7\000\000\000\000\020\128\000\128`\020\006v\128\001\132\128@\000\001\008\004\016\000\000\t\000\002!\004\216D\176\000\001@\016\000\000\012\136\000\020\013\192\000\000\000\005 \000 \024\005\001\157\160\000a \016\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016@\000\000$\000\008\132\019a\018\192\000\005\000@\000\0002 \000P7\000\000\000\000\020\128\000\128`\020\006v\128\001\132\128@\000\001\008\004\016\000\000\t\000\002!\004\216D\176\000\001@\016\000\000\012\136\000\020\013\192\000\000\000\005 \000 \024\005\001\157\160\000a \016\000\000B\001\004\000\000\002@\000\136A6\017,\000\000P\004\000\000\003\"\000\005\003p\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\144\000\"\016M\132K\000\000\020\001\000\000\000\200\128\001@\220\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016@\000\000$\000\008\132\019a\018\192\000\005\000@\000\0002 \000P7\000\000\000\000\020\128\000\144h\020\006v\128\000\132\128@\024\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\005 \000 \024\005\001\157\160\000a \016\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\144\000\"\016M\132K\000\000\020\001\000\000\000\200\128\001@\220\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016@\000\000$\000\008\132\019a\018\192\000\005\000@\000\0002 \000P7\000\000\000\000\020\128\000\128`\020\006v\128\001\132\128@\000\001\008\004\016\000\000\t\000\002!\004\216D\176\000\001@\016\000\000\012\136\000\020\013\222\181^\000\021\"\000$\026\005A\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\130A\160P\025\218\000\002\018\001\000@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\007\151\"@ \024\197q\221\225\000g\1680\000\141b\005\004\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008H\004\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\001\000\000\000\000\000\000\002\008\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128@1\n\227\187\194\000\207P`\001\026\196\n\t\255\215\240Ar$\002A\168_\029\222\016\006z\131\000H\214(PO\254\191\131\203\145 \016\012b\184\238\240\1283\212\024\000F\177\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\191\240\242\228H\004\003\024\190;\188`\012\245&\008\017\236q\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 \185\018\001\000\198+\142\239\008\003=A\128\004k\016('\255_\193\005\200\144\t\006\161|wx@\025\234\012\001#X\161A?\250\254\008.D\128H5\n\227\187\194\000\207P`\t\026\196\026\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\002#\004\217d\176\000\001@\016 \000\014\232\008\148\029\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\128\228\008\004\003\016\162;\180 \012\245\006\000\017\140@\160\128\000\000\004\007 @ \024\133\017\221\161\000g\1680\000\140b\005\004\000\000\000\000\000\000\000\000\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\004\018\013\002\128\206\208\000\016\144\008\002\000!\000\130\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\001\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\018\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\008\014@\128@1\n#\187B\000\207P`\001\024\196\n\008\000\000\000@r\004\002\001\136Q\029\218\016\006z\131\000\008\198 P@\000\000\000\000\000\000\000\000\000\000\004\000\000\000\016\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\004\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\128\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\160P\025\218\000\002\018\001\000@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\016\024 \201%\128\000\008\000\001\000\0003@D\128\140\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\005H\128\t\006\129Pg\232\000\008H\004\001\000\016\144A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000@r\004\002\001\136Q\029\218\016\006z\131\000\008\198 P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128H5\n\227\187\194\000\207P`\t\026\196\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\255\195\203\145 \016\012b\248\238\241\1283\212\152 G\177\198\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\004\000\128\000\004\000\016\000\000\000\000\008\000\000\000\000\000\000\000\145C\000\000\000\000\000\016\008\001\024\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\008\001\000\000\008\000#\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000 \000\008\000\000\000\000\000\000R\000\002A\168P\027\218\000\002\018\001\000@\004 \016@\000\000\000\002\144\000\016\012\194\128\206\208\0000\144\008\n\128!\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\003\000\1603\180\000\012$\002\000\000\008@ \128\000\000\000\005 \000$\026\005\001\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000*D\000H4\n\131;@\000B@ \008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\128`\020\006v\128\001\132\128@\000\001\008\004\016\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001\000\192(\012\237\000\003\t\000\128\000\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000@0\n\003;@\000\194@ \000\000\132\002\008\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016OZ\175\000\n\145\000\018\013\002\160\206\208\000\016\144\008\002\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\164\000\004\003\000\1603\180\000\012$\002\000\000\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\004\004\0082I@\000\002\000\000@\000\008P\017\000\003\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\n\145\000\018\013\002\160\207\208\000\016\144\008\002\000! \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\005\001\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131@\1603\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128 \002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\016\012\194\128\206\208\0000\144\008\n\128!\004\130\000\000\000\002\020\128\000\128f\020\006v\128\001\132\128@T\001\008$\016\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\133\001\189\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000)\000\001\000\204(\012\237\000\003\t\000\128\136\002\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000R\000\002\001\152P\025\218\000\006\018\001\001\016\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\128\001\006\001(\000\000@\000\000\000\001\002\000 \000`\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\128\000 \000A\128J\000\000\016\000\000\000\000@\128\008\000\024\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016@\000\000 \000\008\000\016`\018\128\000\004\000\000\000\000\016 \002\000\006\000\000\000\000\020\128\000\128`\020\006v\128\001\132\128@\000\001\008\004\016\000\000\008\000\002\000\004\024\004\160\000\001\000\000\000\000\004\008\000\128\001\128\000\000\000\005 \000 \024\005\001\157\160\000a \016\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016@\000\000 \000\008\000\016`\018\128\000\004\000\000\000\000\016 \002\000\006\000\000\000\000\020\128\000\128`\020\006v\128\001\132\128@\000\001\008\004\016\000\000\008\000\002\000\004\024\004\160\000\001\000\000\000\000\004\008\000\128\001\128\000\000\000\005 \000 \024\005\001\157\160\000a \016\000\000B\001\004\000\000\002\000\000\128\001\006\001(\000\000@\000\000\000\001\002\000 \000`\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\128\000 \000A\128J\000\000\016\000\000\000\000@\128\008\000\024\000\000\000\000R\000\002\001\128P\025\218\000\006\018\001\000\000\004 \016@\000\000 \000\008\000\016`\018\128\000\004\000\000\000\000\016 \002\000\006\000\000\000\000\020\128\000\128`\020\006v\128\001\132\128@\000\001\008\004\016\000\000\008\000\002\000\004\024\004\160\000\001\000\000\000\000\004\008\000\128\001\128\000\000\000\005 \000 \024\005\001\157\160\000a \016\000\000B\001\004\000\000\002\000\000\128\001\006\001(\000\000@\000\000\000\001\002\000 \000`\000\000\000\001H\000\008\006\001@gh\000\024H\004\000\000\016\128A\000\000\000\128\000 \000A\128J\000\000\016\000\000\000\000@\128\008\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\005 \000 \025\133\001\157\160\000a \016\021\000B\t\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\008\006a@gh\000\024H\004\005@\016\130A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000R\000\002\001\152P\025\218\000\006\018\001\001P\004 \144@\000\000\000\002\144\000\016\012\194\128\206\208\0000\144\008\008\128!\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\164\000\004\0030\1603\180\000\012$\002\002\160\008A \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000 \004\000\000 \000\140\000\000\000\000\000\000\008\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131P\1607\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\016\000\018\000\000\000\000\000\000\000\000 \000\008\000\000\000\000\000\000\000\000\128\000\144\000\000\000\000\000\000\000\001\000\000@\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000@\008\000\000@\001\024\000\000\000\000\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\001\000\000\000\000\000\000\n@\000H5\n\003{@\000B@ \008\000\132\002\008\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\181Z\000\016\002\000\000\000\000@\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\001\000\000\000\000\000\000\n@\000H5\n\003{@\000B@ \008\000\132\002\008\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\023\"@ \024\197q\221\227\000g\1680\000\141b\005\004\000\000\000\000\000\000\000 \016\000\000\000\016\000\000\000\002 \000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128@1\138\227\187\198\000\207P`\129\026\196\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000D`\155,\150\000 (\002\004\128\001\221\001\002\131\184\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\002\000\000\128\000\000\000\000\000\005 \000$\026\133\001\189\160\000! \016\004\000B\001\004\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000 \004\000\000 \000\140\000\000\000\000\000\000\008\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\004\131P\1607\180\000\004$\002\000\128\008@ \128\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\128\000\000\000\128\000\000\000\017\000\000\000\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\191\130\011\145 \018\013B\184\238\241\1283\212\024\"F\177\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\175\224\130\228H\004\003\024\174;\188`\012\245\006\008\017\172@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\005H\128\t\006\129Pg\232\000\008H\004\001\000\016\144A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0020\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\128\016\000\000\128\0020\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\008\000\002\000\000\000\000\000\000\020\128\000\144j\020\006\246\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\029j\180\000 \004\000\000\000\000\128\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\008\000\002\000\000\000\000\000\000\020\128\000\144j\020\006\246\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\191\130\011\145 \018\013B\184\238\241\1283\212\024\"F\177\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\004\002\000\000\000\002\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255_\193\005\200\144\t\006\161\\wx\192\025\234\012\001#X\129A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\008\192 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\016\000\000\000\000\004\007 @ \024\133\017\221\161\000g\1680\000\140b\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000\016\000\031\253\255\132\023#@&\026\133\241\221\227\000\231\1690L\143c\173f\000\000\000 9\002\001\000\196(\142\237\008\003=A\128\004c\016( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128@1\139\227\187\194\000\207P`\001\030\199\026\008\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000@\000\000\000\015\254\191\130\011\145 \016\012b\248\238\240\1283\212\024\000G\177\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 \185\018\001 \212/\142\239\008\003=A\128${\028h \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128H5\011\227\187\194\000\207P`\t\030\199\026\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\008\000\015\254\191\130\011\145 \016\012b\248\238\240\1283\212\024\000F\177B\130\000\000\000\000\000\000\000\016\008\002\000\000\000\000\000\000\000\016\000\002\000\003\255\175\224\130\228H\004\003\024\190;\188 \012\245\006\000\017\172P\160\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\008\004\001\000\000\000\000\000\000\000\008\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\191\130\011\145 \018\013B\248\238\240\1283\212\024\002F\177B\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000 #\000\000\000\008\000\000\000\000 \000\000\000\000\000\000\002\000\012\004\000\000\000\000\001\000\000\000\008\000\000@\005\255\215\240Ar$\002\001\140W\029\222\016\006z\131\000\008\214 P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004 \024\008\000\000\000\000\002\000\000\000\016\000\000\128\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\023#@&\026\133q\221\225\000\231\1680\004\141b%\006\255\235\248 \185\018\001\000\198+\142\239\008\003=A\128\004k\016( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\215\240Ar4\002a\168W\029\222\016\014z\131\000H\214\"P`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\008\000\015\254\191\130\011\145 \018\013B\248\238\240\1283\212\024\002F\177B\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128@ \000\000\000 \000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\\\137\000\144j\021\199w\140\001\158\160\192\0185\136\020\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\191_\192\005H\144\008\006\001Pgx\000\024H\004\000\000X\129A\000\000\000\000\n@\016H4\n\003;@\000B@ \008\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\223\175\224\002\164H\004\003\000\1683\188\000\012$\002\000\000,@\160\128\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001\000 \000\001\000\004\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\133\001\189\160\000! \016\004\000B\001\004\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\016\002\000\000\016\000F\000\000\000\000\000\000\004\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\168P\027\218\000\002\018\001\000@\004 \016@\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\161@oh\000\008H\004\001\000\016\128A\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007Z\173\000\008\001\000\000\000\000 \000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \212(\013\237\000\001\t\000\128 \002\016\008 \000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\008\000\015~\191\128\n\145 \016\012\002\160\206\240\0000\144\008\000\000\177\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\002\003\004\025$\176\001\001\000\000$\000\006(\008\016\017\128\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\161@oh\000\008H\004\001\000\016\128A\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001\000 \000\001\000\004`\000\000\000\000\000\000@\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\133\001\189\160\000! \016\004\000B\001\004\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000T\136\000\144h\021\006~\128\000\132\128@\016\001\t\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144j\020\006\246\128\000\132\128@\016\001\008\004\016\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\170\208\000\128\016\000\000\000\002\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013B\128\222\208\000\016\144\008\002\000!\000\130\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000@\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000 \000\000\002\0020\000\000\000\128\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\002\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\001\004\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\023\"@ \024\197q\221\225\000g\1680\000\141b\005\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\160P\025\218\000\002\018\001\000@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\127\245\252\016\\\137\000\144j\021\199w\132\001\158\160\192\018=\1404\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000@\000\000\000\000\000\000\001\127\245\252\016\\\137\000\128c\021\199w\132\001\158\160\192\0025\136\020\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\023\"@ \024\197q\221\225\000g\1680\000\141b\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\000\144h\020\006v\128\000\132\128@\000\001\008\004\016\000\000\000\000\000 \000\000\000\000\000\000\000\016\000\000\000\000\000\000\000@\000\000\000\005 \000$\026\005\001\157\160\000! \016\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008H\004\000\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\007 @ \024\133\017\221\161\000g\1680\000\140b\005\004\000\000\000\000\000\008\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\016\000\000\001\001\200\016\008\006!Dwh@\025\234\012\000#\024\129A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@r\004\002\001\136Q\029\218\016\006z\131\000\008\198 P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008H\004\000\000\016\128A\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000@\008\000\000@\001\000\001\000\000\000\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\255\235\248\000\128\016\000\000\128\002\000\002\000\000\001\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\000 \004\000\000 \000\128\000\128\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\016\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\001 \208(\012\237\000\001\t\000\128\000\002\016\008 \000\000\000\000\000@\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x@\225\008\137 B\001\000\000\018\000!J\t\000\002`\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\128\000\002\000\128\000\000\002\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\008\000\000\000 \000\000\128 \000\000\000\128\000\000\000\000\002\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000@\000\016\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\0008B\"\008\016\128@\000\004\128\008R\002@\000\152\000\000\245\170\240\001\194\016\000@\132\002\000\000$\000B\144\018\000\004\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\004\002\000\000\016\000\000\000\000\000@\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000\016\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\128\000\000\002\000\000\008\002\000\000\000\008\000\000\000\000\000 \000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\004\000\000\000\000\000\000\001\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016 \000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\0008B \008\016\128@\000\004\128\008R\002@\000\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\014\016\128\002\004 \016\000\001 \002\020\128\144\000\"\000\000\000\004\000\000\016\004\000\000\000\016\000\000\000\000\000@\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\002\000\000\000\008\000\000 \008\000\000\000 \000\000\000\000\000\128\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\128\000\000\002\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000\016\000 \000\000\000\000\000\008\000\000 \008\000\000\000 \000\000@\000\000\128\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\004\000\000\000\016\000\000\000\000\000@\000\128\000\000\000\000\000 \000\000\128 \000\000\016\128\000\001\000\000\002\000\004\000\000@\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000\016\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000@\000\001\000@\000\000\001\000\000\000\000\000\004\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000@\008\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\008\000\245\170\240\000\128\016\000\000\128\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000 \000\000\128 \000\000\016\192\000\000\000\000\002\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\000\000\000\000\000\000@\000\001\000@\000\000\001\000\000\000\000\000\004\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000 \000\000\000\128\000\002\000\128\000\000\002\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\001\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000C\000\000\004\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\128\000\000\002\000\000\000\000\000\008\000\016\000\000\000\000\000\004\000\000\016\004\000\000\000P\000\000 \000\000@\000\128\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\008\002\000\000\000\008\000\000\000\000\000 \000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\004\000\000\000\016\000\000\000\000\000@\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000 \008\000\000\000 \000\000\000\000\000\128\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000@\016\000\000\000`\000\000\000\000\001\000\002\000\000\000\000\000\000\128\000\002\000\128\000\000J\000\000\004\000\000\008\000\016\000\001\000\000\000\004\000\000\016\004\000\000\000\016\000\000\000\000\000@\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000\016\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\008\000\000\000 \000\000\128 \000\000\000\128\000\000\000\000\002\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000@\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\004\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\128 \000\000\000\128\000\000\000\000\002\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\016\000\000\000@\000\001\000@\000\000\001\000\000\000\000\000\004\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000\016\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\008\002\000\000\000\008\000\000\000\000\000 \000@\000\000\000\000\000\016\000\000@\016\000\000\001@\000\000\128\000\001\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\221x\000`\008\000\000B!\000\000\000\000\000\128\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\016\000\000@\016\000\000\001`\000\000\128\000\001\000\002\000\000 \000\000\000\128\000\002\000\128\000\000\002\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\245\186\240\000\192\016\000\000\132b\000\000\000\000\001\000\002\000\000\000\000\000\000\128\000\002\000\128\000\000\002\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\004\001\000\000\000\004\000\000\000\000\000\016\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\128\000\000B\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000 \000\000\128 \000\000\000\128\000\000\000\000\002\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\008\028!\017$\008@ \000\002@\004)A \000L\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\007\001\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005 \000$\026\005\001\157\160\000! \016\004\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\003\016\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000\018\013\002\128\206\208\000\016\144\008\000\000!\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\130\000\000\000\000\000\005 \000$\026\005\001\157\160\000! \016\000\000B\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\255\132\023\"@$\030\135q\221\225\000g\1690D\141b\005f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\\\137\000\144z\021\199w\132\001\158\164\193\0185\136\021\153\223\191p\002\000@\000\000\000\008\000\000\000\000\000 \000\000\000\000\000\000H\161\128\000\000\000\000\000\004\000\000\000\000\000\001\000\000\000\000\000\000w\239\220\000\128\016\000\000\000\002\000\000\000\000\000\008\000\000\000\000\000\003\191~\224\004\000\128\000\000\000\016\000\000\000\000\000@\000\000\000\000\000\000\145C\000\000\000\000\000\000\008\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\t\0200\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000H\161\128\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\002E\012\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\007\151\"@ \024\197q\221\225\000g\1680\000\141b\005\004\255\235\248 \185\018\001\000\198+\142\239\008\003=A\128\004k\016( \000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128@1\138\227\187\194\000\207P`\129\026\196\n\204\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\004@\000\000\006 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\008\128\000\000\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 \185\018\001 \212+\142\239\008\003=A\130$k\016+0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n@\000@3\n\003;@\000\194@ *\000\132\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\\\137\000\128c\021\199w\132\001\158\160\192\0025\136\020\019\255\175\224\130\228H\004\003\024\174;\188 \012\245\006\000\017\172@\160\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\255\235\248 \185\018\001\000\198+\142\239\008\003=A\130\004k\016+0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\015.D\128@1\138\227\187\194\000\207P`\001\026\196\n\t\255\215\240Ar$\002\001\140W\029\222\016\006z\131\000\008\214 P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\253\255\128\016\002\000\000\016\000@\000\000\000\000!\000\000\000\000\000\000\002E\012\000\000\000\000\000@\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000\128\016\000\000\128\0020\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\128\001\235U\224\001\000 \000\001\000\004`\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\030\181^\000\016\002\000\000\016\000F\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\015\254\191\130\011\145 \018\013B\184\238\240\1283\212\024\002F\177\006\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\161\128\000\000\000\000\008\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000@ \016\000\000\000\000\000\000\000\002 \000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008.D\128H5\n\227\187\194\000\207P`\137\026\196\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000F\000\000\000\016\000 \000\000\0001\000\000\000\000\000 \016\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\002A\160p\025\218\000\002\018\001\000@\004 \016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\t\006\129@gh\000\008H\004\001\000\016\128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\255\194\011\145 \018\015C\184\238\240\1283\212\152\"F\177\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\251\255\008.D\128H=\n\227\187\194\000\207R`\137\026\196\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\254\255\194\011\145 \016\012b\184\238\240\1283\212\152 F\177\002\179\000\000\000\000\000\000\000\016\008\000\000\000\000\000\000\000\001\016\000\000\001\139\255\191\240\130\228H\004\003\024\174;\188 \012\245&\008\017\172@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\239\252 \185\018\001 \212+\142\239\008\003=I\130$k\016+7\255\127\225\005\200\144\008\0061\\wx@\025\234L\016#X\129Y\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128@ \000\000\000\000\000\000\000\004@\000\000\006 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\\\137\000\144j\021\199w\132\001\158\164\193\0185\136\021\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\255\132\023\"@$\026\133q\221\225\000g\1690D\141b\005f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255\127\225\005\200\144\t\006\161\\wx@\025\234L\017#X\129Y\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255\127\225\005\200\144\t\006\161\\wx@\025\234L\017#X\129Y\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128@ \000\000\000\000\000\000\000\004@\000\000\006 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\\\137\000\144j\021\199w\132\001\158\164\193\0185\136\021\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\140\000\000\000 \000@\000\000\000b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\t\000\000\000\000\000\000\000\000 H\158\000`\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\128\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\008\016\000\000\000\000\000\000\000\128\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\004\000\000\000\000\000\000\000 \000\000\000@\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\016\002\000\000\000\000\000\004\000\000\016 \000\000\000\000\000\000\001\000\000\000\002\000\000\000\000\004\000\008\000\008\000\000\000\000\000\000\000\0040\002\000\004\002\128\000\000\000\000\001\000\000\004\008\000\000\000\000\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\128\000\128\000\000\000\000\000\000\000C\000 \000\000(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\016\000\000\000\000\000\000\000\000\000\008\224\006\000\000\004\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000 \000\000\000\000\000\000\000\000\000\016\192\012\000\000\008\000\000\000\000\128\001\000\000\000\000\000\000\000\000\000\000\134\000@\000\000@\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000!\128\016\002\000\016\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\002\024\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\0040\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\008\000\000\000\000\000\000\000\000\000\004p\003\000\000\002\000\000\000\000 \000@\000\000\000\000\000\000\000\000\000!\128\024\000\000\016\000\000\000\001\000\002\000\000\000\000\000\000\000\000\000\001\012\000\128\000\000\128\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\008`\004\000\000\004\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000C\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\008\000\000\000\000\000\000\000\000\000\0040\003\000\000\002\000\000\000\000 \000@\000\000\000\000\000\000\000\000\000!\128\016\000\000\016\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\001\012\000\128\000\000\128\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\008`\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") let action = - ((16, "\000\212\000\031\000\000\000\000\000\235\000\000\000\000\000\000\000\212\000\000\000\228\031D\000\000\000\129F\002\000\000\000\000\026v\000\000\031\210\000\000\000\000\000\000\000\000\000\000\000\000\027b\000\000 d\000\000\000\000\000\000\000\000\000\000!P\000\000\000\000\000\000\000k\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\165\000c\000\000\031D!\158G\168\000+GD\000\000\000\000\000\0000h\000rG\168\000\015G\168\000\000\000\156\000\000G\168\000\000\000k\003\250\144\000\000@\182\000\000AdE\016H\"E\016O\240\000\000\006\178\000\000\006\2241\234\000\0002\152\006\2402\1523\190\006\2442\152\000\000\000\000\000\000\000\000\000\000\006\232\000\000\007\198\000\000\000k\000\000\002p\007\204\000\000\007\174\007\158\000k\007\000\007\190N\012\007\018\000\232\000\000\000\000\008\"N\012\007t\008T\000\000\003\248\000\000\000\000\001\254\020\016\000\000\001\254\000\000\000\000\007\150\000\000\003\024\000\003\019<\000\000\003\250\000%\003\250\000\000\000\148\000\000\006\162\000\000\006\162\000\000\000\000\000\000\007\144\000\000\000\000\007\154\000\000\003:\005N\000%\003\250\000\000\000\000\000\000\000\148\000\000\006\162\000\000\003:\000\000\000\000\000\234\000\015\015\238\000\000\020\016\000\000\tJ\015\238\000\000\000\000\tJ\000\000\000\000\007\156\000\000\000\000\007\174\000\000\004z\006\162\000\000\004z\000\000\000\000\008&\000\000\001\028\000\000\006\162\000\000\000\000\000\000\0176>H\000\000\008\140\000\000\0176\008\142\000\000\008\148\000\000$4\000k\002*\000\000\t\180\000\000\tJ\n\170\000\000\006,\003^\n\186\011\194\n\186\000\000\000\000\002\030\000\127\000\000\002F\n\012\000\000\000\000\000\000\005\206\000\000\t\190\000\000\000\000\000\000\000\000\tJ\006,\003^\002\030\002F\005\206\t\192\000\000\006,\003^\002\030\002F\005\206\t\196\000\000\000\127\000\000\n\192\n\188\n\000\000\127\n\\\000\000"), (16, "\n\237\n\237\n\237\n\237\n\237\n\237\n\237\n\237\n\237\n\237\n\237\000:\n\237\n\237\n\237\n\237\n\237\n\237\n\237\n\237\n\237\n\237\000\n\001^\020\131\020\135\n\237\012\022\001j\020\139\006\025\006\002\n\237\016\130\n\237\n\237\n\237\000\158\007y\n\237\017r\008J\000\014\n\237\n\237\005\129\n\237\002\146\000\023\000\027\008~\005\129\008J\007y\000\218\n\237\000\162\000\194\n\237\n\237\004\t\008~\017v\000\250\n\237\n\237\000\162\n\237\006j\n\237\000\198\000J\017z\000N\n\237\000V\n\237\n\237\n\237\n\237\n\237\013\006\000Z\000\158\n\237\n\237\n\237\ny\n\237\n\237\n\237\005\129\n\237\n\237\n\237\n\237\006\n\0182\016\138\n\237\n\237\001^\017\134\007y\005Z\001f\001j\003\198\000\162\n\237\n\237\n\237\000\162\n\237\n\237\n\237\n\237\001^\n\237\t\158\n\237\012\022\001j\n\237\t\146\n\029\n\237\n\237\006\025\000\242\t\158\013~\n\237\008J\000\162\013\174\n\237\000\006\004\t\n\237\016B\000^\008~\n\237\n\237\n\237\n\237\000\162\n\237\n\237\000\162\007y\004\t\n\237\n\237\n\237\005\193\n\237\005\217\n\237\n\237\017\138\n\237\007y\n\237\n\237\012\002\013\006\n\237\n\237\006!\006!\006!\006!\006!\006!\006!\006!\006!\006!\006!\n\029\006!\006!\006!\006!\006!\006!\006!\006!\006!\006!\t\146\017\178\020\150\004\162\006!\008N\008^\008n\n\161\008J\006!\001^\006!\006!\006!\012\022\001j\006!\008~\t\158\n\209\006!\004\138\006\194\006!\000.\006\"\016\162\016\202\016\242\017\002\017.\016Z\006!\0069\0069\018\150\005\145\004\t\0069\000\158\002\202\006!\006!\000\162\003\137\001\006\006!\006!\000n\011\145\000r\006!\000z\006!\006!\006!\006!\006!\012\006\000~\002F\006!\006!\006!\022+\006!\006!\006!\000\162\006!\006!\006!\006!\022/\n\174\017\150\006!\006!\005\185\005\185\005\233\000\158\011\145\0222\000\162\005\129\t\158\006!\006!\002\162\006!\006!\006!\006!\000\218\006!\n\186\006!\006\142\005\241\006!\006\146\007e\006!\006!\021\n\007e\006\150\002\218\006!\000\162\012\194\006\154\021\014\011\145\011\145\006!\017z\000\130\011\145\006!\006!\006!\006!\0061\006!\006!\002\254\t\n\n\166\006!\006!\006!\006A\014\230\006A\006!\006!\006A\006!\013\138\006!\006!\017\166\023\146\006!\006!\006A\006A\006A\006A\006A\006A\006A\006A\006A\006A\006A\008r\006A\006A\006A\006A\006A\006A\006A\006A\006A\006A\n\137\018b\008J\002a\006A\020r\006A\002a\n\129\023\018\006A\008~\006A\006A\006A\006A\016\170\006A\006A\006A\006A\006A\006A\006A\006A\006A\005\169\012\198\003\n\003\018\n\222\023\022\000\158\006A\015\022\0061\006A\003f\023\026\0061\0061\006A\006A\006A\006A\006A\003\213\006A\006A\006\017\014\234\023\134\006A\020r\006A\023\154\006A\006A\006A\003\161\023\158\000\162\006A\006A\006A\005>\006A\006A\006A\005\161\006A\006A\006A\006A\019N\0061\008Y\014\170\006A\t\002\t\158\016\178\014\174\006A\t\146\t\218\n\137\003r\006A\006A\n\137\006A\006A\006A\006A\003\161\006A\023\"\006A\003\017\023n\006A\005f\011\206\006A\006A\002\141\n\137\008Y\008Y\006A\023\n\004\138\008Y\006A\006)\019R\006A\016.\015\026\003\190\006A\006A\000\162\006A\023:\006A\006A\023*\013\254\005\129\006A\0081\005\129\0035\018z\013\006\005\129\006A\005\129\006A\005\209\006A\006A\005\129\005\129\006A\006A\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\015.\000\146\020\234\000\150\006\150\000\154\000\174\000\178\000\182\006\154\020\242\t\146\0126\001^\003\206\006\158\012V\012\022\001j\003\214\008J\000\186\004V\001\030\006\174\006\202\004\193\004z\006\206\008~\011\206\005\241\000\190\012\138\011\206\008:\006)\n\137\005\137\002\146\006)\006)\004%\020\174\001*\004\193\000\162\021.\005\249\n\145\015\214\011\206\006)\008\146\006\214\021Z\021f\001\026\008\150\013\186\007=\023J\004\130\001R\004\186\001V\003\229\000\206\t\154\008\158\015J\017\162\023B\006\234\001^\008\162\006)\006\238\008\166\001j\n\177\006\242\006\246\008\170\006\250\0152\001^\004\198\005\129\008\174\012\022\001j\007=\007=\008Y\004\210\006i\007=\t\158\006\254\007\002\004\189\008\178\008\182\007\006\008\186\t\006\000\162\004\222\008\206\005\177\004\193\003\193\020\219\020\223\008\218\007\014\004!\020\227\000\162\004\189\006I\013\"\005\137\n\137\021z\008Y\008Y\008\250\004\193\014~\008Y\008\254\t:\003\229\t\166\017\246\007\018\t>\004\234\011\206\005\137\007\022\003\229\003\229\005\137\016\210\013\006\003\229\tF\n\193\007\026\006i\006I\006I\015N\015^\001\154\006I\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\004\246\000\146\020\234\000\150\006\150\000\154\000\174\000\178\000\182\006\154\020\242\0039\015\186\001^\005\n\006\158\004\189\012\022\001j\005\026\n\185\000\186\017\014\001\030\006\174\006\202\0039\018\146\006\206\0085\005\030\019\154\000\190\t\"\004\189\008:\018\134\003\021\006\001\013B\004\138\016\218\023:\019b\001*\005&\000\162\008J\005*\015n\n\153\0085\006Y\008\146\006\214\021Z\008~\011\206\008\150\014\002\008\145\0085\005R\001R\006\t\001V\003\245\000\206\t\154\008\158\017j\019J\005V\006\234\001^\008\162\019>\006\238\008\166\001j\000\162\006\242\006\246\008\170\006\250\022K\022O\017\022\005^\008\174\022S\0085\008\145\008\145\005\130\005\138\006Q\008\145\015\166\006\254\007\002\005\225\008\178\008\182\007\006\008\186\0039\000\162\006Y\008\206\0039\0039\003\193\021\190\n\201\008\218\007\014\005\153\005\241\022o\022s\006q\0039\015\222\022w\t\158\015\250\005\142\008\250\005\150\0035\019\150\008\254\t:\015r\t\166\0085\007\018\t>\021\238\005\170\005\174\007\022\002\129\003\245\0035\0039\005\201\023B\tF\0085\007\026\006Q\006q\006q\005\198\006a\001\154\006q\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\019\138\000\146\020\234\000\150\006\150\000\154\000\174\000\178\000\182\006\154\020\242\005\214\023\166\015\170\005\234\006\158\005\242\005\250\006\023\006.\0066\000\186\006:\001\030\006\174\006\202\006Z\006r\006\206\005\129\006\162\006\170\000\190\006\178\006\186\008:\006\190\006\198\015\226\006\222\006\230\015\254\006a\007>\001*\007J\007\146\008J\005%\008\n\0082\005\129\008F\008z\006\214\0035\008~\008R\008\150\0035\0035\005\129\008Z\001R\008b\001V\004\017\000\206\008\154\008\158\008j\0035\023\n\006\234\001^\008\162\008\190\006\238\008\166\001j\008\198\006\242\006\246\008\170\006\250\008\214\005\129\008\222\011\153\008\174\008\230\005\129\002\146\008r\008\238\0035\008\246\t2\tB\006\254\007\002\tJ\008\178\008\182\007\006\008\186\tV\000\162\018\022\008\206\tZ\tb\003\193\tf\tr\008\218\007\014\tz\t\138\t\174\t\190\008a\t\198\t\202\t\242\t\158\t\254\008v\008\250\n\006\017v\nF\008\254\t:\004\017\t\166\005\129\007\018\t>\nf\017z\nr\007\022\004\017\004\017\n\182\n\202\n\214\004\017\tF\005\129\007\026\n\238\008a\008a\n\250\011\130\001\154\008a\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\017\134\000\146\011\138\000\150\006\150\000\154\000\174\000\178\000\182\006\154\011\154\014\170\011\166\011\194\011\202\006\158\014\174\011\222\011\230\011\234\014\178\000\186\011\242\001\030\006\174\006\202\011\246\005\129\006\206\019\022\005\129\011\254\000\190\012\014\005\129\008:\005\129\012\"\012*\012.\012>\005\129\005\129\012F\001*\000\162\012^\008J\012f\012\146\012\154\017v\016.\008z\006\214\012\166\008~\012\170\008\150\017\138\012\178\017z\012\182\001R\012\190\001V\012\206\000\206\008\154\008\158\012\242\012\250\012\254\006\234\001^\008\162\013\014\006\238\008\166\001j\013\022\006\242\006\246\008\170\006\250\013\026\005\129\013*\011\153\008\174\0132\017\134\000:\013J\013R\000\218\013\162\013\234\013\246\006\254\007\002\014j\008\178\008\182\007\006\008\186\001^\000\162\014v\008\206\001f\001j\014\150\014\194\014\206\008\218\007\014\014\214\014\242\014\250\014\254\011\153\015\006\015\n\015\018\t\158\015\"\015:\008\250\015V\015z\015\138\008\254\t:\015\142\t\166\000\162\007\018\t>\000\162\015\150\015\154\007\022\015\162\005\129\015\178\015\194\015\202\015\206\tF\017\138\007\026\015\234\011\153\011\153\016\006\015\214\001\154\011\153\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\016\026\000\146\016*\000\150\006\150\000\154\000\174\000\178\000\182\006\154\016:\016R\016b\016n\004\162\006\158\016\151\016\191\016\231\003\173\016\255\000\186\001^\001\030\006\174\006\202\012\022\001j\006\206\017#\017;\022\254\000\190\007\129\003\173\008:\006\142\017~\017\190\006\146\017\219\018\003\018\015\021\n\001*\006\150\018\031\008J\007\129\018'\006\154\021\014\018:\008z\006\214\000\162\008~\018C\008\150\018K\018S\018n\018\174\001R\018\195\001V\018\211\000\206\008\154\008\158\018\219\018\231\018\243\006\234\001^\008\162\018\255\006\238\008\166\001j\019\006\006\242\006\246\008\170\006\250\019\015\019\"\019+\0193\008\174\019n\019\162\005\233\019\183\019\191\011\230\019\203\019\219\007\129\006\254\007\002\019\227\008\178\008\182\007\006\008\186\019\238\000\162\019\242\008\206\023Z\019\255\n\169\020\011\003\173\008\218\007\014\023^\003\173\003\173\020\018\020\031\020+\0203\020>\t\158\020G\020O\008\250\020[\003\173\003\173\008\254\t:\020v\t\166\020\154\007\018\t>\020\158\020\162\006\142\007\022\020\186\006\146\021:\007\129\021b\021\n\tF\006\150\007\026\021r\003\213\003\173\006\154\021\014\001\154\007\129\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\021\170\000\146\020\234\000\150\006\150\000\154\000\174\000\178\000\182\006\154\020\242\021\178\021\206\021\210\021\254\006\158\022\002\022\n\018.\0227\023\002\000\186\n\169\001\030\006\174\006\202\n\169\n\169\006\206\017r\012\166\023\014\000\190\023\030\023&\008:\023.\023W\023b\023r\017v\023\150\023\175\023\219\001*\023\247\024\006\024\n\024\014\018\162\017z\017v\024\023\008\146\006\214\000\000\n\169\000\000\008\150\022\134\000\000\017z\n\169\001R\000\000\001V\000\000\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\017\134\006\242\006\246\008\170\006\250\000\000\020:\000\000\003\213\008\174\000\000\017\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\003\193\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\008E\000\000\000\000\000\000\000\162\000\000\000\000\008\250\000\000\000\000\000\000\008\254\t:\000\000\t\166\000\162\007\018\t>\017\138\000\000\000\000\007\022\000\000\000\000\000\000\000\000\000\000\000\000\tF\017\138\007\026\000\000\008E\008E\000\000\000\000\001\154\008E\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\nq\000\000\000\000\000\000\000\000\006\158\000\000\000\000\017r\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\000\000\000\006\206\017r\000\000\000\000\000\190\000\000\000\000\008:\000\000\000\000\000\000\000\000\017v\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\017z\017v\000\000\008\146\006\214\000\000\000\000\000\000\008\150\012n\000\000\017z\000\000\001R\000\000\001V\000\000\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\018\202\006\242\006\246\008\170\006\250\000\000\000\000\000\000\011u\008\174\nq\019\210\000\000\000\000\nq\nq\000\000\000\000\000\000\006\254\007\002\000\000\008\178\008\182\007\006\008\186\nq\000\162\000\000\008\206\000\000\000\000\000\000\000\000\000\000\008\218\007\014\023v\000\000\000\000\000\000\011u\000\000\000\000\000\000\000\162\000\000\000\000\008\250\000\000\nq\000\000\008\254\t:\000\000\t\166\000\162\007\018\t>\017\138\000\000\000\000\007\022\000\000\000\000\000\000\000\000\000\000\000\000\tF\017\138\007\026\000\000\011u\011u\000\000\000\000\001\154\011u\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\000\000\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\000\000\000\006\206\000\000\000\000\000\000\000\190\000\000\000\000\008:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\146\006\214\000\000\000\000\000\000\008\150\021>\000\000\000\000\000\000\001R\000\000\001V\000\000\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\008\170\006\250\000\000\000\000\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\000\000\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\011\193\000\000\000\000\000\000\000\000\000\000\000\000\008\250\000\000\000\000\000\000\008\254\t:\000\000\t\166\000\000\007\018\t>\000\000\000\000\000\000\007\022\000\000\000\000\000\000\000\000\000\000\000\000\tF\000\000\007\026\000\000\011\193\011\193\000\000\000\000\001\154\011\193\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\000\000\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\000\000\000\006\206\000\000\000\000\000\000\000\190\000\000\000\000\008:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\146\006\214\000\000\000\000\000\000\008\150\021>\000\000\000\000\000\000\001R\000\000\001V\000\000\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\008\170\006\250\000\000\000\000\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\000\000\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\011\189\000\000\000\000\000\000\000\000\000\000\000\000\008\250\000\000\000\000\000\000\008\254\t:\000\000\t\166\000\000\007\018\t>\000\000\000\000\000\000\007\022\000\000\000\000\000\000\000\000\000\000\000\000\tF\000\000\007\026\000\000\011\189\011\189\000\000\000\000\001\154\011\189\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\000\000\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\000\000\000\006\206\000\000\000\000\000\000\000\190\000\000\000\000\008:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\146\006\214\000\000\000\000\000\000\008\150\0146\000\000\000\000\000\000\001R\000\000\001V\000\000\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\008\170\006\250\000\000\000\000\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\0031\000\000\000\000\000\000\006\254\007\002\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\0031\000\000\000\000\000\000\000\000\008\218\007\014\000\000\017r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0031\000\000\008\250\000\000\000\000\000\000\008\254\t:\000\000\t\166\000\000\007\018\t>\000\000\017v\000\000\007\022\000\000\000\000\000\000\000\000\000\000\000\000\tF\017z\007\026\000\000\0002\006&\000F\000b\001\154\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\000\000\019\026\000\000\000\000\n\029\000\000\017\134\000\000\000\000\000\000\000\000\000\186\000\000\001\030\000\000\006\202\0031\004\169\006\206\000\000\0031\0031\000\190\000\000\000\000\014\182\000\000\000\000\000\000\n\029\000\000\000\000\0031\000\000\001*\000\000\000\000\000\000\000\000\004\169\000\000\000\000\000\000\014\198\006\214\000\000\000\000\0031\000\000\004\169\000\000\000\162\000\000\001R\000\000\001V\0031\000\206\023B\000\000\011\018\000\000\000\000\006\234\001^\017\138\000\000\006\238\001f\001j\000\000\006\242\006\246\008\170\006\250\000\000\000\000\n\017\011\026\004\169\004\169\000\000\000\000\000\000\000\000\n\029\000\000\000\000\000\000\006\254\007\002\000\000\000\000\011\"\007\006\000\000\000\000\000\162\000\000\011b\011j\000\000\n\017\000\000\000\000\000\000\007\014\000\000\017r\011B\000\000\000\000\011*\000\000\011:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\169\t\166\000\000\007\018\014\202\000\000\017v\000\000\007\022\000\000\000\000\011J\000\000\000\000\004\169\014\210\017z\007\026\000\000\0002\0006\000F\000b\001\154\000f\000\000\000j\000\134\000\000\000\138\000\000\000\146\000\000\000\150\n\017\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\n)\000\000\017\134\011R\000\000\000\000\000\000\000\186\000\000\001\030\0112\001\"\000\000\000\000\001&\000\000\000\000\000\000\000\190\000\000\000\000\000\000\004\253\000\000\000\000\n)\000\000\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\000\000\000\000\011r\011Z\001F\001B\000\000\001J\000\000\000\000\000\000\000\000\000\162\000\000\001R\000\000\001V\000\000\000\206\000\000\000\000\000\000\000\000\000\000\001Z\001^\017\138\000\000\001b\001f\001j\001\190\001n\001r\000\000\001v\000\000\000\000\000\000\000\000\000\000\002\182\000F\000b\000\000\000f\n)\000j\000\134\000\000\000\138\001z\000\146\000\000\000\150\001~\000\154\000\174\000\162\000\182\000\000\006\158\000\000\000\000\000\000\000\000\000\000\001\134\000\000\001\030\006\174\006\202\000\186\000\000\006\206\000\000\001\138\000\000\000\000\000\000\000\000\008:\000\000\000\190\000\000\000\000\000\000\000\000\001\142\000\000\001*\000\000\000\000\001\146\000\000\000\000\003\133\000\000\000\000\008\202\006\214\000\000\001\150\000\000\008\150\000\000\000\000\000\000\001\154\001R\000\000\001V\000\000\000\000\000\000\008\158\000\000\000\000\000\206\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\000\000\006\250\000\000\000\000\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\000\162\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\000\000\000\000\000\000\008\250\001\030\006\174\006\202\008\254\t:\006\206\000\000\000\000\007\018\t>\007y\000\000\008:\007\022\000\000\t\146\000\000\000\000\000\000\000\000\tF\001*\007\026\000\000\008J\007y\000\000\000\000\001\154\000\000\006\210\006\214\000\000\008~\000\000\008\150\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\000\000\006\250\000\000\000\000\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007y\006\254\007\002\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\000\000\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\158\011\213\000\000\008\250\011\213\000\000\000\000\008\254\t:\000\000\000\000\000\000\007\018\t>\000\000\000\000\000\000\007\022\000\000\011\213\000\000\007y\000\000\011\213\tF\000\000\007\026\001\178\011\213\000\000\000\000\000\000\001\154\007y\011\213\000\000\000\000\011\213\011\213\000\000\011\213\011\213\000\000\000\000\001\186\000\000\011\213\002\210\000\000\000\000\011\213\000\000\000\000\011\213\000\000\011\213\011\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\213\000\000\011\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\213\005\129\000\000\000\000\000\000\000\000\002\222\000\000\000\000\000\000\000\000\005\129\005\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\213\011\213\011\213\000\000\011\213\011\213\002\226\000\000\011\213\000\000\000\000\000\000\004!\005\129\000\000\004!\002\234\000\000\005\129\002\146\011\213\000\000\005\129\011\213\011\213\011\213\011\213\000\000\000\000\000\000\004!\011\213\011\213\011\213\004!\011\213\011\213\011\213\004!\004!\000\000\000\000\000\000\000\000\000\000\004!\000\000\000\000\004!\004!\000\000\004!\004!\000\000\005\129\004!\000\000\004!\004!\000\000\000\000\004!\000\000\005\129\004!\000\000\004!\004!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\000\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\000\000\004!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\004!\005\129\005\129\000\000\000\000\005\129\004!\000\000\000\000\000\162\000\000\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\004!\004!\000\000\004!\004\189\004!\000\000\004!\000\000\001=\001=\001=\001=\000\000\001=\004!\001=\001=\000\000\001=\000\000\001=\004!\001=\004!\001=\001=\001=\001=\000\000\004!\004!\004!\017F\004!\004!\004!\000\000\000\000\000\000\001=\001=\001=\000\000\000\000\000\000\000\000\001=\000\000\000\000\000\000\000\000\001=\000\000\000\000\000\000\001=\000\000\000\000\000\000\001=\000\000\000\000\017J\000\000\000\000\001=\000\000\000\000\000\000\006~\006J\000b\001=\000f\000\181\006N\000\134\001=\000\138\000\000\000\146\000\000\000\150\000\000\000\154\000\174\001=\000\182\000\000\000\000\000\000\000\000\011\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\186\000\000\000\000\000\000\000\000\000\000\001=\011\"\000\000\001=\000\000\000\190\000\000\000\181\000\181\000\000\000\000\000\000\000\000\000\000\001=\000\000\000\000\011B\000\000\001=\011*\001=\011:\000\000\001=\000\000\001=\000\000\000\000\004%\000\000\001=\004%\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\011J\000\000\000\000\000\000\004%\000\000\001=\000\000\004%\001=\001=\000\000\004%\004%\000\000\000\000\000\000\000\000\000\000\004%\017N\000\000\004%\004%\000\000\004%\004%\000\000\000\000\004%\000\000\004%\004%\000\000\000\000\004%\011R\000\000\004%\000\000\004%\004%\000\000\0112\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\181\000\000\000\000\000\000\000\000\000\000\004%\000\000\004%\000\000\000\000\000\000\000\000\000\000\000\000\000\181\011Z\000\000\004%\000\000\000\000\000\000\000\000\000\000\004%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004%\004%\004%\000\000\004%\004\193\004%\000\000\004%\000\000\000\000\000\000\012)\000\000\000\000\012)\004%\000\000\000\000\000\000\004%\000\000\000\000\004%\000\000\004%\000\000\000\000\000\000\000\000\012)\004%\004%\004%\012)\004%\004%\004%\007.\012)\000\000\000\000\000\000\000\000\000\000\012)\000\000\000\000\012)\012)\000\000\012)\012)\000\000\000\000\0076\000\000\012)\007B\000\000\000\000\012)\000\000\000\000\012)\000\000\012)\012)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012)\000\000\012)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012)\000\000\000\000\000\000\000\000\000\000\007N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012)\012)\012)\000\000\012)\000\000\007R\000\000\012)\000\000\n\013\n\013\n\013\n\013\000\000\n\013\007Z\n\013\n\013\000\000\n\013\000\000\n\013\012)\n\013\012)\n\013\n\013\n\013\n\013\000\000\012)\012)\012)\000\000\012)\012)\012)\000\000\000\000\000\000\n\013\n\013\n\013\000\000\000\000\000\000\000\000\n\013\000\000\000\000\000\000\000\000\n\013\000\000\000\000\000\000\017^\000\000\000\000\000\000\017f\000\000\000\000\000\000\000\000\000\000\n\013\000\000\000\000\000\000\000\000\000\000\000\000\n\013\000\000\000\000\000\000\000\000\n\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004E\n\013\000J\004E\000N\004E\000V\004E\000\000\004E\000\000\000\000\000\000\000Z\004E\004E\000\000\000\000\000\000\000\000\000\000\n\013\000\000\000\000\n\013\000\000\000\000\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\013\000\157\004E\004E\000\000\n\013\000\000\n\013\004E\000\000\n\013\000\000\n\013\000\000\000\000\000\000\000\000\n\013\000\000\000\157\n\013\000\000\000\000\000\000\004E\000\000\000\000\004E\000\000\000\000\000\000\000\000\004E\004E\011\"\n\013\004E\000^\017\222\n\013\000\157\000\157\000\000\000\000\004E\000\000\000\000\000\000\004E\004E\000\157\000\000\000\000\011*\000\000\011:\000\000\000\000\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157\004E\000\000\000\000\000\000\000\000\004E\004I\000\000\000n\004I\000r\004I\000z\004I\004E\004I\000\000\000\000\000\000\000~\004I\004I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004I\004E\000\157\000\000\004E\004E\000\000\000\000\004E\0112\004I\004I\000\000\004E\004E\000\000\004I\000\000\004E\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\001\137\004I\000\000\000\000\004I\000\157\000\157\000\000\000\000\004I\004I\000\000\000\000\004I\000\130\001\137\000\000\000\000\000\000\001\137\000\000\004I\000\000\000\000\001\137\004I\004I\000\000\000\000\000\000\001\137\000\000\000\000\001\137\001\137\004I\001\137\001\137\000\000\000\000\000\000\000\000\001\137\000\000\000\000\004I\001\137\000\000\000\000\001\137\000\000\001\137\001\137\000\000\004I\000\000\000\000\000\000\000\000\004I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004I\000\000\000\000\000\000\001\137\000\000\001\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\000\000\004I\000\000\000\000\004I\004I\000\000\000\000\004I\000\000\000\000\000\000\000\000\004I\004I\000\000\000\000\000\000\004I\000\000\001\137\001\137\001\206\000\000\001\137\001\137\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\001\137\001\137\001\137\001\137\000\000\000\000\000\000\000\000\002v\001\137\001\137\000\000\001\137\001\137\001\137\t\253\t\253\t\253\t\253\000\000\t\253\000\000\t\253\t\253\000\000\t\253\000\000\t\253\000\000\t\253\000\000\t\253\t\253\t\253\t\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\253\t\253\t\253\000\000\000\000\000\000\000\000\t\253\000\000\000\000\000\000\000\000\t\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\241\t\253\000\000\000\000\000\000\000\000\000\000\000\000\t\253\000\000\000\000\000\000\000\000\t\253\000\000\000\000\000\000\000\000\011\241\000\000\000\000\000\000\t\253\000\000\000\000\000\000\nV\000\000\000\000\000\000\000\000\000\000\000\000\011\241\000\000\000\000\000\000\000\000\000\000\011\241\011\241\000\000\t\253\n^\000\000\t\253\nj\000\000\000\000\011\241\000\000\000\000\011\241\000\000\011\241\000\000\t\253\000\000\000\000\000\000\000\000\t\253\000\000\t\253\000\000\000\000\t\253\000\000\t\253\000\000\000\000\000\000\000\000\t\253\000\000\011\241\t\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\149\000\000\000\000\000\000\000\000\000\000\000\000\t\253\000\000\nv\017b\t\253\n\001\n\001\n\001\n\001\000\000\n\001\000\149\n\001\n\001\000\000\n\001\000\000\n\001\000\000\n\001\011\241\n\001\n\001\n\001\n\001\nz\000\149\011\241\000\000\000\000\000\000\000\000\000\149\000\149\000\000\n\130\n\001\n\001\n\001\011\241\000\000\000\000\000\149\n\001\000\000\011*\000\000\000\149\n\001\000\000\000\000\000\000\017\226\000\000\011\241\011\241\000\000\000\000\000\153\000\000\000\000\000\000\n\001\000\000\000\000\000\000\000\000\000\000\000\149\n\001\000\000\000\000\000\000\000\000\n\001\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\000\n\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\000\000\000\000\000\n\001\000\149\000\000\n\001\000\153\000\000\000\000\011*\0112\000\153\000\000\000\000\000\000\000\000\n\001\000\000\000\000\000\000\000\000\n\001\000\149\n\001\000\000\000\000\n\001\000\000\n\001\000\000\000\000\000\000\000\153\n\001\000\000\000\000\n\001\000\149\000\149\000\000\0002\0006\000F\000b\000\000\000f\000\000\000j\000\134\000\000\000\138\n\001\000\146\000\000\000\150\n\001\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\000\017\234\000\186\018\006\000\000\0112\000\000\000\000\018\018\000\000\000\000\000\000\000\000\000\190\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\169\018*\000\000\000\000\000\000\000\000\000\153\000\153\000\202\000\000\000\000\000\000\000\000\018V\000\000\000\000\000\000\000\000\011\026\000\000\000\000\004}\000\206\000\000\004}\000R\004}\000\000\004}\000\000\004}\000\000\000\000\011\"\000\000\004}\004}\000\000\000\000\000\169\000\169\000\000\018v\000\000\000\000\018\198\000\000\000\000\004}\000\169\000\000\000\000\011*\000\000\011:\000\000\018\222\000\000\004}\004}\000\000\018\234\000\000\008-\004}\000\000\018\246\000\000\019\002\000\000\000\000\000\000\000\000\019\018\000\000\011J\019\194\000\000\000\000\000\000\004}\000\000\000\000\004}\000\000\000\000\000\000\000\000\004}\004}\000\000\019\206\004}\004}\004\129\019\230\000\000\004\129\000v\004\129\004}\004\129\000\000\004\129\004}\004}\000\000\000\000\004\129\004\129\000\000\000\169\000\000\000\000\004}\000\000\000\000\000\000\0112\000\000\000\000\004\129\000\000\000\000\004}\000\000\000\000\000\000\000\000\000\000\000\169\004\129\004\129\004}\000\000\000\000\000\000\004\129\004}\000\000\000\000\000\000\000\000\000\000\000\000\000\169\000\169\004}\000\000\000\000\000\000\000\000\000\000\004\129\000\000\000\000\004\129\000\000\000\000\000\000\000\000\004\129\004\129\000\000\000\000\004\129\004\129\004}\000\000\000\000\004}\004}\000\000\004\129\004}\000\000\000\000\004\129\004\129\004}\004}\000\000\000\000\000\000\004}\000\000\000\000\004\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\129\000\000\000\000\000\000\000\000\004\129\004\133\000\000\000\000\004\133\000\142\004\133\000\000\004\133\004\129\004\133\000\000\000\000\000\000\000\000\004\133\004\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\133\004\129\000\000\000\000\004\129\004\129\000\000\000\000\004\129\000\000\004\133\004\133\004\185\004\129\004\129\004\185\004\133\004\185\004\129\004\185\000\000\004\185\000\000\000\000\000\000\000\000\004\185\004\185\000\000\000\000\000\000\000\000\004\133\000\000\000\000\004\133\000\000\000\000\000\000\004\185\004\133\004\133\000\000\000\000\004\133\004\133\000\000\000\000\000\000\004\185\004\185\000\000\004\133\000\000\000\000\004\185\004\133\004\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\133\000\000\000\000\000\000\000\000\004\185\000\000\000\000\004\185\000\210\004\133\000\000\000\000\004\185\004\185\000\000\000\000\004\185\004\185\004\133\000\000\000\000\000\000\000\000\004\133\004\185\000\000\000\000\000\000\004\185\004\185\000\000\000\000\004\133\000\000\000\000\000\000\000\000\000\000\004\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\185\000\000\000\000\000\000\004\133\000\000\000\000\004\133\004\133\004\185\000\000\004\133\001\238\000\000\004\185\002>\004\133\004\133\000\000\000\000\000\000\004\133\000\000\004\185\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\000\002\001\000\000\000\000\000\000\004\185\000\000\001\254\004\185\004\185\002\001\002\001\004\185\002^\002f\000\000\000\000\004\185\004\185\002\001\000\000\000\000\004\185\002\030\000\000\000\000\002\006\000\000\002\022\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\000\000\002\001\002.\000\000\000\000\002\001\002\001\000\000\000\000\002\014\000\000\000\186\000\000\000}\000\000\000\000\000}\000\000\000\000\000\000\000\000\002\001\000\190\000\000\002\001\002\001\002\001\002\001\000\000\000\000\000\000\001\246\000\000\002\001\002\001\000}\002n\0026\002\001\000\000\000}\000\000\000\000\000\202\000\000\000\000\001\254\000\000\000\000\000}\000}\000\000\000}\000}\000\000\000\000\000\000\000\206\000}\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000}\000\000\000\000\000\000\000\000\008\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\162\000\000\000\000\000}\0002\t\182\000F\000b\000\000\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\020\234\000\150\006\150\000\154\000\174\000\178\000\182\006\154\020\242\000}\002.\t\166\000\000\000}\000}\000\000\000\000\002\014\000\000\000\186\000\000\000e\000\000\000\000\000e\000\000\000\000\000\000\000\000\000}\000\190\000\000\000}\000}\000}\000}\000\000\000\000\000\000\000e\000\000\000}\000}\000e\000}\0026\000}\000\000\000e\000\000\000\000\000\202\000\000\000\000\001\254\000\000\000\000\000e\000e\000\000\000e\000e\000\000\000\000\000\000\000\206\000e\000\000\000\000\000\000\000e\000\000\000\000\002\006\000\000\002\022\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000\000\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\162\000\000\000\000\000e\000\000\003\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000e\000\000\000\000\000e\000e\000\000\000\000\002\014\000\000\000\000\000\000\000]\000\000\000\000\000]\000\000\000\000\000\000\000\000\000e\000\000\000\000\000e\000e\000e\000e\000\000\000\000\000\000\000]\000\000\000e\000e\000]\000e\000e\000e\000\000\000]\000\000\000\000\000\000\000\000\000\000\000]\000\000\000\000\000]\000]\000\000\000]\000]\000\000\000\000\000\000\000\000\000]\000\000\000\000\000\000\000]\000\000\000\000\002\006\000\000\000]\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\000\000\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\000\000\020\238\000F\000b\000\000\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\020\234\000\150\006\150\000\154\000\174\000\000\000\182\006\154\020\242\000]\000]\000\000\000\000\000]\000]\000\000\000\000\002\014\000\000\000\186\000\000\000a\000\000\000\000\000a\000\000\000\000\000\000\000\000\000]\000\190\000\000\000]\000]\000]\000]\000\000\000\000\000\000\000a\000\000\000]\000]\000a\000]\000]\000]\000\000\000a\000\000\000\000\000\000\000\000\000\000\000a\000\000\000\000\000a\000a\000\000\000a\000a\000\000\000\000\000\000\000\206\000a\000\000\000\000\000\000\000a\000\000\000\000\002\006\000\000\000a\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\003\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000\000\000a\000a\000\000\000\000\002\014\000\000\000\000\000\000\000q\000\000\000\000\000q\000\000\000\000\000\000\000\000\000a\000\000\000\000\000a\000a\000a\000a\000\000\000\000\000\000\001\246\000\000\000a\000a\000q\000a\000a\000a\000\000\000q\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000q\000q\000\000\000q\000q\000\000\000\000\000\000\000\000\000q\000\000\000\000\000\000\000q\000\000\000\000\002\006\000\000\002\022\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000q\0002\006B\006J\000b\000\000\000f\000\000\006N\000\134\000\000\000\138\000\000\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000q\000q\000\000\000\000\000q\000q\000\000\000\000\002\014\000\000\000\186\000\000\000i\000\000\000\000\000i\000\000\000\000\000\000\000\000\000q\000\190\000\000\000q\000q\000q\000q\000\000\000\000\000\000\001\246\000\000\000q\000q\000i\000q\000q\000q\000\000\000i\000\000\000\000\006R\000\000\000\000\001\254\000\000\000\000\000i\000i\000\000\000i\000i\000\000\000\000\000\000\000\206\000i\000\000\000\000\000\000\000i\000\000\000\000\002\006\000\000\002\022\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000\000\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000i\000\000\000\000\000i\000i\000\000\000\000\002\014\000\000\000\000\000\000\000m\000\000\000\000\000m\000\000\000\000\000\000\000\000\000i\000\000\000\000\000i\000i\000i\000i\000\000\000\000\000\000\001\246\000\000\000i\000i\000m\000i\000i\000i\000\000\000m\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000m\000m\000\000\000m\000m\000\000\000\000\000\000\000\000\000m\000\000\000\000\000\000\000m\000\000\000\000\002\006\000\000\002\022\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000m\000\000\000\000\000m\000m\000\000\000\000\002\014\000\000\000\000\000\000\000u\000\000\000\000\000u\000\000\000\000\000\000\000\000\000m\000\000\000\000\000m\000m\000m\000m\000\000\000\000\000\000\001\246\000\000\000m\000m\000u\000m\000m\000m\000\000\000u\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000u\000u\000\000\000u\000u\000\000\000\000\000\000\000\000\000u\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\002.\000\000\000\000\000u\000u\000\000\000\000\002\014\000\000\000\000\000\000\001\238\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000u\000\000\000\000\000u\000u\000u\000u\000\000\000\000\000\000\001\246\000\000\000u\000u\000\133\000u\000u\000u\000\000\000\133\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000\133\000\133\000\000\000\133\002f\000\000\000\000\000\000\000\000\000\133\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\002.\000\000\000\000\000\133\000\133\000\000\000\000\002\014\000\000\000\000\000\000\001\238\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\133\000\000\000\000\000\133\000\133\000\133\000\133\000\000\000\000\000\000\001\246\000\000\000\133\000\133\000y\002n\0026\000\133\000\000\000y\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000y\000y\000\000\000y\000y\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\002.\000\000\000\000\000y\000y\000\000\000\000\002\014\000\000\000\000\000\000\001\238\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000y\000\000\000\000\000y\000y\000y\000y\000\000\000\000\000\000\001\246\000\000\000y\000y\000\129\000y\0026\000y\000\000\000\129\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000\129\000\129\000\000\000\129\002f\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\004\153\000\000\000\000\004\153\000\000\004\153\000\000\004\153\000\000\004\153\000\000\000\000\000\000\000\000\004\153\004\153\000\000\000\000\000\000\000\000\000\000\000\129\002.\000\000\000\000\000\129\000\129\004\153\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\153\004\153\000\000\000\000\000\129\000\000\004\153\000\129\000\129\000\129\000\129\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\000\000\129\0026\000\129\004\153\000\000\000\000\004\153\005\226\000\000\000\000\000\000\004\153\004\153\000\000\000\000\004\153\004\153\005\129\000\000\000\000\005\129\000\000\005\129\004\153\005\129\000\000\005\129\004\153\004\153\000\000\000\000\005\129\005\129\000\000\000\000\000\000\000\000\004\153\000\000\005\129\000\000\000\000\000\000\000\000\005\129\000\000\000\000\004\153\000\000\005\129\005\129\000\000\000\000\000\000\005\129\005\129\004\153\000\000\000\000\000\000\005\129\004\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\153\000\000\000\000\000\000\005\129\000\000\005\129\000\000\000\000\005\129\002\146\000\000\000\000\005\129\005\129\002\146\000\000\000\000\005\129\005\129\004\153\005\129\000\000\004\153\004\153\005\129\005\129\004\153\000\000\000\000\005\129\005\129\004\153\004\153\000\000\005\129\000\000\004\153\000\000\000\000\005\129\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\005\129\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\005\129\000\000\000\000\000\000\n\198\005\129\000\000\000\000\000\000\003i\000\000\003i\000\000\000\000\003i\000\000\000\000\000\000\000\000\000\000\005\129\000\000\000\000\005\129\005\129\005\129\000\000\005\129\005\129\005\129\003i\000\000\005\129\005\129\000\000\000\000\000\000\005\129\005\129\003i\003i\000\000\005\129\003i\003i\000\000\000\000\000\000\000\000\003i\000\000\003i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\000\000\000\000\003i\003i\003i\000\000\003i\003i\000\000\003i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\000\000\001\161\003i\003i\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\000\000\000\000\000\000\000\000\001\161\000\000\000\000\003i\001\161\000\000\000\000\000\000\000\000\001\161\003i\000\000\003i\000\000\003i\001\161\000\000\000\000\001\161\001\161\000\000\001\161\001\161\000\000\003i\000\000\000\000\001\161\000\000\003i\000\000\001\161\000\000\000\000\001\161\003i\001\161\001\161\003i\000\000\000\000\000\000\000\000\000\000\003i\000\000\000\000\000\000\003q\003q\003q\003q\000\000\003q\000\000\003q\003q\001\161\003q\001\161\003q\000\000\003q\000\000\003q\003q\003q\003q\000\000\001\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\238\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003q\001\161\001\161\007~\000\000\001\161\000\000\000\000\000\000\001\161\001\030\000\000\t\226\000\000\000\000\t\230\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\001\161\000\000\001\161\003q\000\000\000\000\000\000\001*\007\134\001\161\001\161\003q\001\161\001\161\001\161\000\000\t\234\n>\000\000\000\000\n\166\n\190\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\n\001^\000\000\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\n\"\000\000\000\000\000\162\000\000\000\000\001\030\000\000\t\226\000\000\000\000\t\230\n*\000\000\000\000\000\000\000\000\000\000\000\000\005\169\000\000\n\194\000\000\n\222\000\000\003q\000\000\001*\000\000\000\000\000\000\000\000\000\000\n.\000\000\000\000\t\234\n>\n2\000\000\n\166\n\190\000\000\000\000\011\186\000\000\001R\n6\001V\000\000\000\000\000\000\000\000\001\154\000\000\000\000\n\n\001^\000\000\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\n\"\000\000\000\000\000\162\000\000\000\000\001\030\000\000\t\226\000\000\000\000\t\230\n*\000\000\000\000\000\000\000\000\000\000\000\000\005\169\000\000\n\194\000\000\n\222\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\n.\000\000\000\000\t\234\n>\n2\000\000\n\166\n\190\000\000\000\000\n\230\000\000\001R\n6\001V\000\000\000\000\000\000\000\000\001\154\000\000\000\000\n\n\001^\000\000\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\n\"\000\000\000\000\000\162\000\000\000\000\001\030\000\000\t\226\000\000\000\000\t\230\n*\000\000\000\000\000\000\000\000\000\000\000\000\005\169\000\000\n\194\000\000\n\222\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\n.\000\000\000\000\t\234\n>\n2\000\000\n\166\n\190\000\000\000\000\005\021\000\000\001R\n6\001V\000\000\000\000\000\000\000\000\001\154\000\000\012\013\n\n\001^\012\013\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\000\000\000\000\012\013\000\000\000\000\000\000\012\013\000\000\000\000\000\000\003V\006\254\n\030\000\000\000\000\000\000\n\"\012\013\000\000\000\162\000\000\012\013\000\000\012\013\012\013\000\000\000\000\003^\n*\000\000\003j\000\000\000\000\012\013\000\161\005\169\012\013\n\194\012\013\n\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n.\000\000\000\000\011\026\000\000\n2\000\000\000\000\000\000\000\000\012\013\001\189\000\000\000\000\n6\000\000\000\000\000\000\011\"\000\000\001\154\000\000\012\013\000\000\000\161\000\161\000\000\000\000\003v\000\000\000\000\000\000\000\000\001\030\000\161\t\226\000\000\011*\t\230\011:\000\000\000\000\000\000\000\000\000\000\000\000\012\013\012\013\000\000\012\013\000\000\003z\000\000\012\013\001*\000\000\000\000\000\000\000\000\000\000\000\161\003\130\000\000\t\234\n>\012\013\000\000\n\166\n\190\000\000\012\013\012\013\000\000\001R\000\000\001V\012\013\000\000\000\000\000\000\012\013\012\013\012\013\n\n\001^\000\000\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\161\000\000\000\000\000\000\000\000\001\137\000\000\0112\001\137\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\n\"\000\161\000\000\000\162\000\000\001\137\000\000\000\000\000\000\000\000\000\000\000\000\n*\000\000\001\137\000\000\000\161\000\161\000\000\005\169\001\137\000\000\000\000\n\222\000\000\000\000\001\137\001\137\000\000\000\000\000\000\000\000\007\178\n.\000\000\008\002\001\137\000\000\n2\001\137\000\165\001\137\001\137\000\000\001\201\000\000\000\000\n6\000\000\000\000\007\186\000\000\000\000\001\154\002\017\000\000\000\000\000\000\011\026\002\017\000\000\000\000\001\137\000\000\001\137\007\194\000\000\000\000\002\017\002\017\000\000\008\018\008\026\011\"\000\000\000\000\000\000\002\017\000\000\000\165\000\165\007\226\000\000\000\000\007\202\000\000\007\218\002\017\000\000\000\165\000\000\000\000\011*\000\000\011:\000\000\000\000\001\137\001\137\001\198\000\000\001\137\001\137\000\000\000\000\001\137\000\000\007\234\000\000\002\017\000\000\000\000\000\000\000\000\000\000\011J\000\000\001\137\000\000\002\017\001\137\001\137\000\000\001\137\000\000\000\000\000\000\000\000\002\130\001\137\001\137\000\000\001\137\001\137\001\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\017\007\242\000\000\000\000\002\017\000\000\000\000\000\000\007\210\000\165\000\000\000\000\001%\000\000\000\000\001%\0112\000\000\000\000\000\000\000\000\000\000\000\000\002\017\000\000\002\017\000\000\000\000\000\165\000\000\007\186\000\000\002\017\002\017\001%\008\"\007\250\002\017\000\000\001%\000\000\000\000\000\000\000\165\000\165\007\194\000\000\000\000\001%\001%\000\000\001%\001%\000\000\000\000\000\000\000\000\001%\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\234\001\013\001%\000\000\001\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001%\000\000\000\000\000\000\000\000\000\000\000\000\001\013\000\000\000\000\000\000\001\013\000\000\000\000\000\000\000\000\001\013\000\000\000\000\000\000\000\000\000\000\007\194\001%\007\242\001\013\001\013\001%\001\013\001\013\000\000\007\210\000\000\000\000\001\013\000\000\000\000\000\000\001\013\000\000\000\000\007\202\000\000\007\218\001\013\000\000\001%\000\000\001%\000\000\000\000\000\000\000\000\000\000\000\000\001%\001%\000\000\001%\007\250\001%\000\000\000\000\000\000\001\013\001\005\001\013\000\000\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\000\000\000\000\000\000\000\000\000\000\000\000\001\005\000\000\000\000\000\000\001\005\000\000\000\000\000\000\000\000\001\005\000\000\000\000\000\000\000\000\000\000\001\005\001\013\001\013\001\005\001\005\001\013\001\005\001\005\000\000\007\210\000\000\000\000\001\005\000\000\000\000\000\000\001\005\000\000\000\000\007\202\000\000\001\005\001\005\000\000\001\013\000\000\001\013\000\000\000\000\000\000\000\000\000\000\000\000\001\013\001\013\000\000\001\013\001\013\001\013\000\000\000\000\000\000\001\005\001\t\001\005\000\000\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\005\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\001\t\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\001\t\001\005\001\005\001\t\001\t\001\005\001\t\001\t\000\000\007\210\000\000\000\000\001\t\000\000\000\000\000\000\001\t\000\000\000\000\007\202\000\000\001\t\001\t\000\000\001\005\000\000\001\005\000\000\000\000\000\000\000\000\000\000\000\000\001\005\001\005\000\000\001\005\001\005\001\005\000\000\000\000\000\000\001\t\001\025\001\t\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\000\000\007\186\000\000\000\000\000\000\001\025\000\000\000\000\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\007\194\001\t\001\t\001\025\001\025\001\t\001\025\001\025\000\000\007\210\000\000\000\000\001\025\000\000\000\000\000\000\001\025\000\000\000\000\007\202\000\000\007\218\001\025\000\000\001\t\000\000\001\t\000\000\000\000\000\000\000\000\000\000\000\000\001\t\001\t\000\000\001\t\001\t\001\t\000\000\000\000\000\000\007\234\001\017\001\025\000\000\001\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\007\186\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\007\194\001\025\001\025\001\017\001\017\001\025\001\017\001\017\000\000\007\210\000\000\000\000\001\017\000\000\000\000\000\000\001\017\000\000\000\000\007\202\000\000\007\218\001\017\000\000\001\025\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\001\025\001\025\000\000\001\025\001\025\001\025\000\000\000\000\000\000\001\017\001\021\001\017\000\000\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\000\000\007\186\000\000\000\000\000\000\001\021\000\000\000\000\000\000\000\000\001\021\000\000\000\000\000\000\000\000\000\000\007\194\001\017\001\017\001\021\001\021\001\017\001\021\001\021\000\000\007\210\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\000\000\007\202\000\000\007\218\001\021\000\000\001\017\000\000\001\017\000\000\000\000\000\000\000\000\000\000\000\000\001\017\001\017\000\000\001\017\001\017\001\017\000\000\000\000\000\000\007\234\001\029\001\021\000\000\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\000\000\000\000\000\000\000\000\000\000\007\186\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\007\194\001\021\001\021\001\029\001\029\001\021\001\029\001\029\000\000\007\210\000\000\000\000\001\029\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001\029\000\000\001\021\000\000\001\021\000\000\000\000\000\000\000\000\000\000\000\000\001\021\001\021\000\000\001\021\001\021\001\021\000\000\000\000\000\000\007\234\007\178\001\029\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\000\000\007\186\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\007\194\001\029\007\242\001-\001-\001\029\001-\008\026\000\000\007\210\000\000\000\000\001-\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001-\000\000\001\029\000\000\001\029\000\000\000\000\000\000\000\000\000\000\000\000\001\029\001\029\000\000\001\029\001\029\001\029\000\000\000\000\000\000\007\234\007\178\001-\000\000\001!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\000\007\186\000\000\000\000\000\000\001!\000\000\000\000\000\000\000\000\001!\000\000\000\000\000\000\000\000\000\000\007\194\001-\007\242\001!\001!\001-\001!\001!\000\000\007\210\000\000\000\000\001!\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001!\000\000\001-\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\000\001-\001-\000\000\008\"\007\250\001-\000\000\000\000\000\000\007\234\007\178\001!\000\000\001)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\000\000\000\000\000\000\000\000\000\000\007\186\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\000\000\000\007\194\001!\007\242\001)\001)\001!\001)\008\026\000\000\007\210\000\000\000\000\001)\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001)\000\000\001!\000\000\001!\000\000\000\000\000\000\000\000\000\000\000\000\001!\001!\000\000\001!\007\250\001!\000\000\000\000\000\000\007\234\000\000\001)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\030\000\000\001\"\000\000\000\000\001&\000\000\000\000\000\000\000\000\000\000\001)\007\242\000\000\000\000\001)\000\000\000\000\000\000\007\210\000\000\001*\000\000\000\000\001.\000\000\000\000\000\000\000\000\000\000\001>\001B\000\000\001J\001)\t\222\001)\000\000\000\000\000\000\001R\000\000\001V\001)\001)\000\000\001)\007\250\001)\000\000\001Z\001^\000\000\n\206\001b\001f\001j\000\000\001n\001r\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001z\000\000\000\000\000\000\001~\000\000\000\000\000\162\001\030\000\000\001\"\000\000\000\000\001&\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\008>\000\000\001\138\008=\000\000\000\000\001*\000\000\000\000\001.\000\000\000\000\000\000\000\000\001\142\001>\001B\000\000\001J\001\146\000\000\000\000\008=\000\000\008=\001R\000\000\001V\001\150\000\000\000\000\000\000\000\000\000\000\001\154\001Z\001^\000\000\000\000\001b\001f\001j\000\000\001n\001r\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001z\000\000\000\000\000\000\001~\000\000\000\000\000\162\001\030\000\000\001\"\000\000\000\000\001&\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\008=\000\000\001\138\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\000\000\000\000\000\000\001\142\001>\001B\000\000\001J\001\146\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\001\150\000\000\000\000\000\000\000\000\000\000\001\154\001Z\001^\000\000\000\000\001b\001f\001j\000\000\001n\001r\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001z\000\000\000\000\000\000\001~\000\000\000\000\000\162\001\030\000\000\001\"\000\000\000\000\001&\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\014\186\000\000\001\138\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\000\000\000\000\000\000\001\142\001>\001B\000\000\001J\001\146\000\000\001\030\000\000\001\"\000\000\001R\001&\001V\001\150\000\000\000\000\000\000\000\000\000\000\001\154\001Z\001^\000\000\000\000\001b\001f\001j\001*\001n\001r\001.\001v\000\000\000\000\000\000\000\000\001>\004\226\000\000\001J\000\000\000\000\000\000\000\000\000\000\000\000\001R\001z\001V\000\000\000\000\001~\000\000\000\000\000\162\000\000\001Z\001^\000\000\000\000\001b\001f\001j\001\134\001n\001r\000\000\001v\000\000\000\000\000\000\000\000\001\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001z\001\142\000\000\000\000\001~\000\000\001\146\000\162\001\030\000\000\001\"\000\000\000\000\001&\000\000\001\150\001\134\000\000\000\000\000\000\000\000\001\154\000\000\000\000\000\000\001\138\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\000\000\000\000\000\000\001\142\001>\001\130\000\000\001J\001\146\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\001\150\000\000\000\000\000\000\000\000\000\000\001\154\001Z\001^\000\000\000\000\001b\001f\001j\000\000\001n\001r\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001z\000\000\000\000\003\202\001~\000\000\000\000\000\162\003a\000\000\003a\000\000\000\000\003a\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\138\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\000\000\000\000\000\000\001\142\003a\003a\000\000\003a\001\146\000\000\000\000\000\000\000\000\000\000\003a\000\000\003a\001\150\000\000\000\000\000\000\000\000\000\000\001\154\003a\003a\000\000\000\000\003a\003a\003a\000\000\003a\003a\000\000\003a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\000\000\000\000\004!\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\000\000\004!\000\000\000\000\000\000\000\000\000\000\003a\000\000\004!\004!\000\000\000\000\000\000\000\000\000\000\004!\000\000\000\000\001\030\000\000\0012\004!\004!\0016\000\000\004!\000\000\003a\004!\000\000\000\000\004!\003a\000\000\004!\000\000\004!\004!\000\000\001*\000\000\003a\001.\000\000\000\000\000\000\000\000\003a\001:\001N\000\000\001J\000\000\000\000\000\000\000\000\000\000\004!\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\022\001^\000\000\000\000\003\026\001f\001j\004!\003\030\003\"\000\000\003&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\004!\003*\000\000\004\189\004!\003.\004!\000\000\000\162\000\000\000\000\001\030\000\000\0012\004!\000\000\0016\0036\004!\000\000\000\000\004!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\000\000\000\000\001*\004!\004!\001.\000\000\000\000\003:\000\000\000\000\001:\004\202\003>\001J\000\000\000\000\000\000\000\000\000\000\000\000\001R\003B\001V\000\000\000\000\000\000\000\000\001\154\000\000\000\000\003\022\001^\000\000\000\000\003\026\001f\001j\000\000\003\030\003\"\000\000\003&\000\000\000\000\000\000\000\000\001\030\000\000\0012\000\000\000\000\0016\000\000\000\000\000\000\000\000\000\000\003*\000\000\000\000\000\000\003.\000\000\000\000\000\162\000\000\000\000\001*\000\000\000\000\001.\000\000\000\000\0036\000\000\000\000\001:\0032\000\000\001J\000\000\000\000\001\030\000\000\006\202\000\000\001R\006\206\001V\000\000\000\000\000\000\000\000\000\000\003:\000\000\003\022\001^\000\000\003>\003\026\001f\001j\001*\003\030\003\"\000\000\003&\003B\000\000\000\000\000\000\006\210\008*\001\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\003*\001V\000\000\000\000\003.\000\000\000\000\000\162\000\000\006\234\001^\000\000\000\000\006\238\001f\001j\0036\006\242\006\246\000\000\006\250\000\000\000\000\000\000\000\000\001\030\000\000\006\202\000\000\000\000\006\206\000\000\000\000\000\000\000\000\006\254\007\002\003:\000\000\000\000\007\006\000\000\003>\000\162\000\000\000\000\001*\000\000\000\000\000\000\000\000\003B\007\014\000\000\000\000\006\210\006\214\001\154\000\000\000\173\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\007\018\000\000\006\234\001^\011\026\007\022\006\238\001f\001j\000\000\006\242\006\246\000\000\006\250\007\026\000\000\000\000\000\000\000\000\011\"\001\154\000\000\000\000\000\000\000\000\000\173\000\173\000\000\006\254\007\002\000\000\000\000\000\000\007\006\000\000\011B\000\162\001\030\011*\006\202\011:\000\000\006\206\000\000\000\000\007\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\011J\000\000\000\000\000\000\000\000\007\018\006\210\007\n\000\000\000\000\007\022\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\007\026\000\000\000\000\000\000\000\000\000\000\001\154\006\234\001^\000\000\000\000\006\238\001f\001j\000\000\006\242\006\246\011R\006\250\000\000\000\000\000\000\000\000\001\030\0112\t\226\000\000\000\000\t\230\000\000\000\000\000\000\000\000\006\254\007\002\000\000\000\173\000\000\007\006\000\000\000\000\000\162\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\007\014\000\173\000\173\t\234\t\246\000\000\000\000\011\018\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\007\018\000\000\n\n\001^\011\026\007\022\n\014\001f\001j\000\000\n\018\n\022\000\000\n\026\007\026\000\000\000\000\000\000\000\000\011\"\001\154\000\000\000\000\000\000\000\000\000\189\011j\000\000\006\254\n\030\000\000\000\000\000\000\n\"\000\000\011B\000\162\001\030\011*\t\226\011:\000\000\t\230\000\000\000\000\n*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\011J\000\000\000\000\000\000\000\000\n.\t\234\n&\000\000\000\000\n2\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\n6\000\000\000\000\000\000\000\000\000\000\001\154\n\n\001^\000\000\000\000\n\014\001f\001j\000\000\n\018\n\022\011R\n\026\000\000\000\000\000\000\000\000\001\030\0112\t\226\000\000\000\000\t\230\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\189\000\000\n\"\000\000\000\000\000\162\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\n*\011r\011Z\t\234\n>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\n.\000\000\n\n\001^\000\000\n2\n\014\001f\001j\000\000\n\018\n\022\000\000\n\026\n6\000\000\000\000\000\000\000\000\000\000\001\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\n\"\000\000\000\000\000\162\000\000\000\000\000\000\000\000\0002\0006\000F\000b\n*\000f\000\000\000j\000\134\007\169\000\138\017r\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\n.\000\000\000\000\000\000\000\000\n2\007\169\000\186\017v\000\000\000\000\000\000\000\000\000\000\n6\000\000\007\169\007\169\019\234\000\000\001\154\000\000\007\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\000\000\000\202\000\000\007\169\000\000\000\000\018V\000\000\007\169\000:\017\134\000:\007\169\007\169\001\153\000\206\000\000\000\000\001\153\000\000\007\169\000\000\000\000\000\000\007\169\007\169\000\000\000\000\000\000\001\153\000\000\000\000\000\000\001\153\007\169\001\153\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\169\001\153\000\000\000\000\001\153\000\000\001\153\000\000\000\000\007\169\000\000\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\169\000\000\017\138\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\007\169\000\000\000\000\007\169\007\169\000\000\000\000\007\169\000\000\000\000\000\000\000\000\007\169\007\169\000\000\005\129\000\000\007\169\005\129\000\000\001\153\003\166\005\129\001\153\005\129\000\000\000\000\001\153\000\000\005\129\005\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\000\000\000\000\003\174\000\000\000\000\000\000\001\153\001\153\001\153\000\000\007\169\0002\000\214\000F\000b\000\000\000f\000\000\000j\000\134\000\000\000\138\000\000\000\146\000\000\000\150\005\129\000\154\000\174\000\178\000\182\003\254\000\000\000\000\004N\000\218\000\000\000\000\007\169\000\000\000\000\000\000\000\000\000\186\000\000\000\000\007\169\000\000\000\000\004\006\007\169\007\169\000\000\002\t\000\190\000\000\000\000\000\000\000\000\000\000\007\169\000\000\000\000\000\000\004\014\000\000\000\000\000\000\002\t\000\000\004^\004f\000\000\000\000\000\000\000\202\000\000\000\000\000\000\007\169\004.\000\230\000\000\004\022\005\129\004&\000\000\000\000\000\000\000\206\000\000\000\000\000\000\007\169\011\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0046\000\000\000\000\000\000\000\000\000\000\011\026\007\169\000\000\000\000\007\169\007\169\002\t\000\237\000\000\000\000\000\237\000\000\000\000\007\169\007\169\011\"\000\000\000\162\007\169\000\000\000\000\000\177\000\177\000\000\000\000\004\006\000\000\000\000\000\000\000\237\004>\011B\000\000\002\t\011*\000\234\011:\004\030\000\000\000\000\004\014\000\000\000\000\000\000\000\237\000\000\000\237\000\237\000\000\002\t\000\000\000\000\000\000\000\000\002\t\002\t\004.\011J\011Y\004\022\000\000\004&\000\000\000\000\004n\004F\002\t\000\000\000\000\000\000\000\213\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0046\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000\213\011R\000\237\000\000\000\000\000\000\000\000\000\000\0112\000\000\000\000\004\014\000\000\000\000\000\000\000\213\000\000\000\213\000\213\000\205\000\177\000\000\000\205\000\000\000\000\000\000\004>\000\213\000\000\000\237\004\022\000\000\004&\004\030\000\000\000\177\011Z\000\205\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\237\000\000\000\000\000\000\000\000\000\237\000\237\000\205\000\213\000\000\000\000\000\205\000\000\000\205\000\205\000\237\004F\000\237\000\000\000\000\000\213\000\000\000\000\000\205\000\000\000\000\004\022\000\000\000\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\209\000\000\000\000\000\000\000\213\000\000\000\000\000\213\000\000\000\205\000\000\004\030\000\000\000\000\000\000\000\209\000\000\000\000\000\000\000\209\000\000\000\205\000\000\000\213\000\000\000\000\000\000\000\000\000\213\000\213\000\209\000\000\000\000\000\000\000\209\000\000\000\209\000\209\000\213\000\213\000\213\000\000\000\000\000\000\000\000\000\205\000\209\000\000\000\205\004\022\000\000\000\209\004\030\000\225\000\000\000\000\000\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\000\000\205\000\205\004\006\000\209\000\000\000\000\000\225\000\000\000\000\000\000\000\205\000\205\000\205\000\000\000\000\000\209\000\000\004\014\000\000\000\000\000\000\000\225\000\000\000\225\000\225\000\000\000\000\000\000\000\000\000\217\000\000\000\000\000\217\000\225\000\000\000\000\004\022\000\000\004&\000\209\000\000\000\000\000\209\000\000\000\000\000\000\004\030\004\006\000\000\000\000\000\000\000\217\000\000\000\000\000\000\000\000\000\000\000\000\000\209\0046\000\000\000\000\004\014\000\209\000\209\000\000\000\217\000\000\000\217\000\217\000\000\000\225\000\000\000\209\000\209\000\209\000\000\000\000\000\217\000\000\000\000\004\022\000\000\004&\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\225\000\000\000\000\000\225\000\000\000\000\000\000\004\030\004\006\000\217\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\225\000\000\000\217\000\000\004\014\000\225\000\225\000\000\000\221\000\000\000\221\000\221\000\000\000\000\000\000\000\225\000\225\000\225\000\000\000\000\000\221\000\000\000\000\004\022\000\000\004&\000\217\000\000\000\000\000\217\000\000\000\000\000\000\004\030\000\229\000\000\000\000\000\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\217\0046\000\000\000\000\000\000\000\217\000\217\004\006\000\000\000\000\000\000\000\229\000\000\000\221\000\000\000\217\000\217\000\217\000\000\000\000\000\000\000\000\004\014\000\000\000\000\000\000\000\229\000\000\000\229\000\229\003\254\000\000\000\000\000\245\000\000\000\000\000\000\000\221\004.\000\000\000\221\004\022\000\000\004&\004\030\000\000\000\000\000\000\004\006\000\000\000\000\000\000\000\245\000\000\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\221\000\221\004\014\0046\000\000\000\000\000\245\000\000\000\245\004f\000\221\000\221\000\221\000\000\000\000\000\229\000\000\000\000\004.\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\254\000\000\000\000\000\233\000\000\000\000\000\000\004>\000\000\000\000\000\229\000\000\0046\000\000\004\030\000\000\000\000\000\000\004\006\000\000\000\000\000\000\000\233\000\000\000\245\000\000\000\229\000\000\000\000\000\000\000\000\000\229\000\229\004\014\000\000\000\000\000\000\000\233\000\000\000\233\000\233\000\229\000\229\000\229\000\000\000\000\000\000\000\000\004>\004.\000\000\000\245\004\022\000\000\004&\004\030\003\254\000\000\000\000\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\000\000\000\000\000\000\000\000\000\245\000\245\004\006\0046\000\000\000\000\000\241\000\000\000\000\000\000\004n\004F\000\245\000\000\000\000\000\233\000\000\004\014\000\000\000\000\000\000\000\241\000\000\000\241\004f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004.\003\185\000\000\004\022\003\185\004&\004>\000\000\003\185\000\233\003\185\000\000\000\000\004\030\000\000\003\185\003\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\0046\000\000\000\000\000\000\000\233\000\233\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\233\004F\000\233\000\000\002-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\185\000\000\004>\000\000\000\000\000\241\000\000\000\000\000\000\004\030\000\000\000\000\002-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002-\000\241\000\000\000\000\002-\002-\000\241\000\241\000\000\000\000\000\000\000\000\000\000\000\000\002-\000\000\000\241\004F\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002-\0002\005.\000F\000b\003\185\000f\000\000\000j\000\134\000\000\000\138\000\000\000\146\002-\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\186\002-\000\000\000\000\002-\002-\000\000\000\000\000\000\000\000\000\000\000\190\000\000\002-\002-\000\000\000\000\000\000\002-\000\000\000\000\0002\000\214\000F\000b\000\000\000f\000\000\000j\000\134\000\000\000\138\000\202\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\000\0052\0056\000\000\000\186\000\000\0002\005.\000F\000b\000\000\000f\000\000\000j\000\134\000\190\000\138\000\000\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\186\000\000\000\000\000\000\000\230\000\000\000\000\000\000\000\000\000\000\000\000\000\190\000\206\000\000\000\000\000\000\000\000\005:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\000\000\000\000\000\002y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\000\021\182\0056\000\162\000\000\000\000\0002\005.\000F\000b\000\000\000f\000\000\000j\000\134\000\000\000\138\000\000\000\146\000\000\000\150\000\234\000\154\000\174\000\178\000\182\000\000\000\000\000\000\0002\000\214\000F\000b\000\000\000f\000\000\000j\000\134\000\186\000\138\000\000\000\146\000\000\000\150\002)\000\154\000\174\000\178\000\182\000\190\000\000\000\000\000\000\000\000\000\000\021\186\000\000\000\000\000\000\000\000\000\000\000\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\190\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\000\0052\0056\000\000\000\000\000\000\000\202\000\000\000\000\011\018\000\000\000\000\000\230\000\000\0002\005.\000F\000b\000\000\000f\000\206\000j\000\134\000\000\000\138\000\000\000\146\011\026\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\"\000\000\000\000\000\000\000\186\000\000\000\185\011j\000\000\000\000\000\000\000\000\000\000\005B\000\000\000\190\011B\000\000\000\162\011*\000\000\011:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\000\000\000\000\000\000\000\011J\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\000\021\182\0056\000\000\000\000\000\000\002!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011R\000\000\000\000\000\000\000\000\000\000\000\000\0112\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\194\000\000\000\000\000\000\000\185\011Z")) + ((16, "\001\146\000\006\000\000\000\000\000\241\000\000\000\000\000\000\001\146\000\000\002B)\234\000\000\000[B\146\000\000\000\000\025x\000\000\029\170\000\000\000\000\000\000\000\000\000\000\000\000\0266\000\000\030h\000\000\000\000\000\000\000\000\000\000\031&\000\000\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\000L\000\000)\234\031\228\028\224\000\176C\218\000\000\000\000\000\000D\170\001\140\028\224\001J\028\224\000\000\001\030\000\000\028\224\000\000\000\133\001\2348\246\000\000\000\000:\252\000\000=f\000\000=\2388\2468\246\018^\018^=f\018^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000;\1328\246\000\000\000\000;\132\000\000;\132\000\0008\246\000\000\000\000\000\000\020\196\000\133\000\000\018^\000\0000P8\246\02708\246\000\000\000\000\000\000\000\000\000\000\000\000 28\246!*8\246!\1548\246\"\1468\246\000\0008\246\000\0008\246#\0028\246#\2508\246$j8\246%b8\246%\2108\246\001^8\246\000\000\000\000\000\000\000\000\000\0008\246&\2028\246':8\246(28\246\000\000\000\0008\246\000\000\000\000\017\244*f\000\000\000\000\001X\000\000\000\000\000\000\000\000\025F\000[\000\000*\014\000\000\000\179\018^\000\0008\246\001\170\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\001\176\000\000\000\000\002h\000\000\002\252=f\000\000\000\000\000\000\000\000\000\000\000\000>\1508\246\000\000>\150\000\000>\150=f\000\000\000\000/6\000\133\000\000\018^\003\006\000\0008\246\003,\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000C\0228\246\000\0008\246\000\000\000\000\0034\000\000\000G<,\004\0068\246\004\004\000\000\000\000=f\000G\000\000\000\000\000\000\000\000\000\000D\236=fEB=fE\246=fFL=f\000\000=f\000\000=fG\000=fGV=fH\n=fH`=fI\0208\246\003\210=f\000\000=fIj=fJ\030=fJt\003\194\000\000\003\212\000\000\000\1358\246\000\000\000\135\000\000\000\000\000\210)\234\000\000\000\210\000\000\000\000\003\2308\246\000\000\003\234\000\000\018^\003\254\000\000\000\000\005d\000\000\018^\004\160\000\000\000\000\004\228\000\000\000\000\001\234\000\000\005\204\000\000*fJ\248\005\174\005\160\000\133\005\004\005\214K\218\000\176\000\000\000\000\000tM$\000\000\000\000\000\000\005\224\005\216\0026\005\238K\218\001\030K\218\000\000\000\000\000\031\000\000\000\000\005:\000\000\005@\006\012K\218\005^\000\000\000\000\000t\000\000\005b\006>\000\000MhL\130\000\000\000\133\006F\000\000\025F\000\133\006L\000\000\000\000)\008\028\224\005n\000\000\006\006\000\000\005\160\000\000\000\t)\234\000\000)\234\000\000\005\144\000\000\000\t\000\000\016\030\026X\006fK\218\005\180\006\144\000\000N\182\000[\000\000\003\210\004B)\234\005\186\000\000\000i\000\000\001z\000\000\006\150\000\000\000\000;\192\000[\000\000\000i\000\000\000\000\000\000\000\000\000\000\006\1288\246\005\202\019\012\006\1368\246\005\210\006\134\000\136\005\254\006\182\000\000?\142?\224\018^\005\218\000\000\005\220?\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\1628\246\000\000@\162\000\000@\162?\224\000\000\000\000\024\154\000\133\000\000\018^\005\224\000\0008\246\005\224\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000,\0068\246\000\0008\246\000\000\005\232\000\000\000\135\000\000\000\000\000\000\000\000\000\0000\174?\2241\166?\2242\022?\2243\014?\224\000\000?\224\000\000?\2243~?\2244v?\2244\230?\2245\222?\2246N8\246\006\024?\224\000\000?\2247F?\2247\182?\2248\174\018^\005\248\000\000\000\0008\246\000\000\006\216\000\000\001V\006\1768\246\006|\000\000\006\1828\246\006\134\000\000\001:\000\000\006\182\006\182\001V\000\000\001V\000\000\016\030\006\182\006\182\000\000\000\000\000\000\023\162\000\000\000\000\000\000\000\000\006\2148\246\006\030\019\012\019\218\000\133\006\250\000\000\006\2269\204\007\n9\204\007\0208\246\006>\019\012\019\012\001J\001L\000\133\000\000\000\000\000\000\001L\000\000\001\236\001\012\000\000\000\000\006D\000\000\000\000\000\000\007 \000\000\007\"\000\000\000\000\007V\007\n8\246\006R\0074\000\000<\182\007\022\018^\006j\019\012\000\000\000\000\006\148\000\000\0012\000\000\005^\000\000\001V\000\000\000\000\006\230\000\000\021\164\026X\007.K\218\006|\007Z\000\000\000\133\000\000\003\0128\246,N\000\000@\2448\246\006\132\000\000\018^\006\136\000\000\006\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\1828\246\000\000A\182\000\000A\182B\008\018^\006\140B\008\000\000\000\000M\198\000\133\000\000\018^\006\144\000\0008\246\006\142\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008\246\000W8\246\006\146\000\000\000\000-\028+6\007F8\246\000\000\007\016\000\000\000\000\000\133\000\000\000\000\006\208,N\000\000\006\208,N\000\000\000\004\000\000\000\000\030\144B\008:\026B\008<\246B\008A\000B\008\000\000B\008\000\000B\008NrB\008N\164B\008N\252B\008O\000\000\008B\000\000\000\000\000\000\008\014\000\000\000\000\0012\000\000\006\182\000\000\000,\000\000\000\000\000\236\019\218\000\000\000\236\000\000\000\000\007n\000\000\001\182\000\003\019\012\000\000\004\006\000K\004\006\000\000\0012\000\000\006\182\000\000\006\182\000\000\000\000\000\000\007n\000\000\000\000\007x\000\000\002*\005^\0012\004\006\000\000\000\000\000\000\0012\000\000\006\182\000\000\002*\000\000\000\000\000\238\000\015\016\030\000\000\016\218\000\000\tf\016\030\000\000\000\000\tf\000\000\000\000\007~\000\000\000\000\007\148\000\000\002\166\006\182\000\000\002\166\000\000\000\000\008\n\000\000\0012\000\000\006\182\000\000\000\000\000\000\017j:T\000\000\008p\000\000\017j\008v\000\000\008x\000\000\021\164\000\133\002\216\000\0008\246\008z\000\000\008\\\008L\000\133\007\166\008bK\218\007\170\004F\000\0008\246\008\134\000\000\000,\004H\000\0008\246\008\140\000\000\025F\000\133\004\158\000\0008\246\008\142\000\000\003\022\017j\000\000\021\188\004\196\000\0008\246\008\156\000\000\000\000\000\000\008\134\008v\000\133\007\214\008\146K\218\007\218\004\228\000\0008\246\008\182\000\000\003\014\000\000\008\158\018^\007\232\008\196\000\000\003\018\000\000\005.\000\0008\246\008\200\000\000\025F\000\133\005^\000\0008\246\008\202\000\000\003\022\000\000\000\000\007\244\000\000\003\014\007\214\008n\000\000\000\000\000\000\008r\000\000\002\150\001:\000\000\016\030\008\200\000\000\000\0008\246\008*\006\182\000\000\008\000\000\000\000\136\000\000\000\000\001R\016\030\000\000\016\030\000\000\007\240\000\000\001R\000\000=f\003\134=f\000\000=f\000\000\007\242\000\000\003\134\000\000\019\012\0046\019\012\000\000\019\012\000\000\007\244\000\000\0046\000\000=f\003\134\007\248\000\000?\152\000\133\004D?\152\000\000?\152\000\000\007\250\000\000\004D\000\000=f\003\134\007\254\000\000\000\000\022\220\000\000\000\000\008l\n\226\000\000\000\000\008F\000\133\000\000\000\000\000\000\000\000\002\028\n\226\000\000\002~\t\024\000\000\000\000\000\000\008\188\000\000\000\000\000\000\000\000\027\024\028\136\000\000\006\018\000\000\n\226\000\000\004\144\n\226\000\000\000G\000J\000J\000\000\002N\000J\000\000\008>\000\000\000\000\000\000\000\000\008\208\000\000\029\024\000\000)\234\n\226\000\000\004\224\n\226\000\000\008\210\000\000\n\226\008\212\000\000\011B\011\174\008\214\000\000\008\216\000\000\012:\022\022\n\226\008\\\n\226\008\222\000\000\008\224\000\000\008\228\000\000)\234\000\000\004t)\234\000\000\008f\013\178\000\000\000\004\n\226\000\000\005\022\n\226\000\000\0030\004*\000\133\000\000\001(\000\133\000\000\008n\000\000\000\000\000\000\000\000\008\242\000\000\013B\027f\008\246\000\000\008\248\000\000\n\226\t\004\000\000\n\226\t\006\000\000\n\226\t\008\000\000\n\006\018\226\n\226\008\138\n\226\t\012\000\000\t\014\000\000\000\000\005&\n\226\000\000\0050\001z\001z\000\000\000\000\000\000\005\030\001z\000\000\008\142\000\000\000\000\000\000\000\000\n\226\000\000\005@\n\226\000\000\005^\004H\000\133\008\144\000\000\000\000\000\000\000\000\t\022\000\000\t\024\000\000\n\226\t\030\000\000\014\"\027f\t \000\000\t\"\000\000\023l\008\204\008\252\020Z\n\226\t.\000\000\000\000\t2\000\000\t\004\023l\n\226\t6\000\000\n\226\t8\000\000\t<\000\000\012\202\008\192\n\226\tH\000\000\tJ\000\000\000\133\008\190\000\000\000\000\022\220\000\000\000\000\002N\t\170\000\000\000\000\001\023\000\000\000\000\000\0008\246\000\171\t\248\t\024\t\162=f\000\000\002\140=f\000\000\008\236\000\000\000\000\000\000\000\000\000\000\002\174\000\000\001\024\000\000\000\000\000\000\004\006\024\130\005\158\024\130\024\130\005\158\000\000\000\000\000F\000F\000F\000F\000\000\000\000\000\000\000\000\000\000\000\000\001V\016\030\t\186\013n\000K\000\000\000\000\003\246\000\000\008\014\000\000,N\008\240\000\000\001V\016\030\008\246\014\198\000\000\001V\013n\000\000\000\000\000\000\021\164\000F\000\000\000\171\000\000\000\000\t>\0014\t\182L\186\000\000\002DM\252\000\000\000\000\t\184\t\168\000\133\000\000\000\133\000\000\002D\000\000\005TL\186\000\000\000\000\t\002\t\200\006\182\t\020\000\000\001\168\003\246\000\000\008\014\000\000\003\138\004\130\000\000\000\000\t\188\000\000\000\000\002N\000\000\004\182\000\000\000\000\000\0008\246\000\171\000\000\002\174\000\000\004\212\000\000\000\000\000\000\005^\000\000\n\190\004\130\n\190\000\000\006\182\n\190\000\000\006\166\000\000\006\182\000\000\006\182\000\000\006\182\000\000\000\000\000\000\000\000\000\000\000\171\000\000\006\182\000\000\006\166\000\000\006\182\000\000\006:\000\000\000\000\tf\tJ\000\133\004t\t\242\003(\000\000\003(\n\028\000\000\n\030\000\000\n \000\000\000\000\004`\003(\025\162\003(\000\000\000\000\003z\t*\000\000\tf\000\133\t0\000\000\007\254\n,\000\000\007f\006*\nD\002\128\nD\000\000\000\000\0050\000\133\000\000\002L\t\148\000\000\000\000\000\000\002\232\000\000\tH\000\000\000\000\000\000\t\136\000\133\tR\000\000\000\000\007\254\007f\006*\0050\002L\002\232\tT\000\000\007f\006*\0050\002L\002\232\tX\000\000\000\133\000\000\nX\nV\t\152\000\133\t\242\000\000"), (16, "\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\004\138\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\008J\002\146\000\158\006\029\011\t\005\133\020\159\020\163\000:\008~\011\t\020\167\011\t\011\t\011\t\017\214\007}\011\t\000\n\006\002\006\142\011\t\011\t\006\146\011\t\000\023\000\027\021&\020\178\006\150\008J\007}\000\162\011\t\006\154\021*\011\t\011\t\000\014\008~\006m\011\173\011\t\011\t\002\202\011\t\005\133\011\t\003\141\n\166\013\006\t\n\011\t\000\158\011\t\011\t\011\t\011\t\011\t\017^\006=\006=\011\t\011\t\011\t\006=\011\t\011\t\011\t\005\245\011\t\011\t\011\t\011\t\n\174\n\157\011\173\011\t\011\t\011\230\t\158\007}\003\198\000\162\006\n\017\218\001^\011\t\011\t\011\t\012\022\001j\011\t\011\t\011\t\011\t\n\186\011\t\006m\011\t\013~\0085\011\t\006\029\018\166\011\t\011\t\000\194\011\173\011\173\t\158\004\197\011\t\011\173\012\002\013\174\011\t\005\173\007i\011\t\000\162\n\222\007i\011\t\011\t\011\t\011\t\004)\011\t\011\t\004\197\007}\005\133\011\t\011\t\011\t\000\198\011\t\003\217\011\t\011\t\000\218\011\t\007}\011\t\011\t\005\197\013\006\011\t\011\t\006%\006%\006%\006%\006%\006%\006%\006%\006%\006%\006%\004\162\006%\006%\006%\006%\006%\006%\006%\006%\006%\006%\n\189\008r\013\138\004\162\006%\008N\008^\008n\011\206\t\146\006%\001^\006%\006%\006%\012\022\001j\006%\008J\005>\016\130\006%\006\194\005\165\006%\006\142\004\197\008~\006\146\012\006\000\158\016Z\021&\006%\006\150\008v\005\149\004\013\000\006\006\154\021*\000\250\006%\006%\004\197\000\162\001^\006%\006%\002e\001f\001j\006%\002e\006%\006%\006%\006%\006%\011\173\000\162\000\158\006%\006%\006%\019j\006%\006%\006%\005\237\006%\006%\006%\006%\006j\t\146\000\242\006%\006%\t\002\000\162\n\189\006\021\005\237\012\166\016\138\n\189\n\189\006%\006%\014\170\000\162\006%\006%\006%\006%\014\174\006%\t\158\006%\014\178\005\141\006%\004\138\005f\006%\006%\019n\002\145\018\206\t\002\001\006\006%\020\247\020\251\000\162\n\189\004\013\020\255\006%\001\026\002F\n\189\006%\006%\006%\006%\t\006\006%\006%\003\021\005\181\016.\006%\006%\006%\006E\002\162\006E\006%\006%\006E\006%\003\217\006%\006%\023\190\005\221\006%\006%\006E\006E\006E\006E\006E\006E\006E\006E\006E\006E\006E\013\254\006E\006E\006E\006E\006E\006E\006E\006E\006E\006E\n\133\n\237\005\189\005\189\006E\020\142\006E\000\158\002\218\002\254\006E\005\245\006E\006E\006E\006E\005\141\006E\006E\006E\006E\006E\006E\006E\006E\006E\000.\006\"\016\162\016\202\016\242\017\002\017.\006E\005\141\t\"\006E\000\162\005\141\003\025\012\194\006E\006E\006E\006E\006E\006E\006E\014\230\006E\nA\014~\006E\020\142\006E\023\198\006E\006E\006E\017z\003\165\023\202\006E\006E\006E\n\141\006E\006E\006E\005\253\006E\006E\006E\006E\n\157\015\186\005Z\015\214\006E\021\218\006E\n\133\023.\005\157\017\230\006E\n\133\n\133\006E\006E\017\134\n\181\006E\006E\006E\006E\003\165\006E\n\133\006E\006E\003\n\006E\004\138\0232\006E\006E\015^\nA\023\162\003=\0236\006E\001^\018\190\020\202\006E\012\022\001j\006E\016B\n\165\n\133\006E\006E\003=\006E\012\198\006E\006E\016\170\006\005\000J\006E\000N\014\234\000V\013\006\023\210\006]\006E\023V\006E\000Z\006E\006E\n\157\000\162\006E\006E\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\t\218\000\146\021\006\000\150\006\150\000\154\000\174\000\178\000\182\006\154\021\014\023>\001^\005)\003\018\006\158\012\022\001j\011\206\003f\n\157\000\186\005\245\001\030\006\174\006\202\006\013\000n\006\206\000r\t\146\000z\000\190\004\193\016\178\008:\006]\n\157\000~\008J\003r\000^\023F\003\190\001*\003=\000\162\021J\008~\004%\003=\003=\004\193\008\146\006\214\021v\021\130\016\210\008\150\013\186\003\206\007A\003=\001R\017\014\001V\003\233\000\206\t\154\008\158\015\022\015.\0126\006\234\001^\008\162\018\194\006\238\008\166\001j\011\173\006\242\006\246\008\170\006\250\n\157\003=\003\214\023^\008\174\011\206\019\182\022G\007A\007A\023V\005\213\000\130\007A\006\254\007\002\022K\004V\008\178\008\182\007\006\008\186\012V\000\162\008J\008\206\022N\004z\003\197\015J\011\173\008\218\007\014\008~\t\158\004\193\004\130\016\218\006M\012\138\011\206\000\162\021\150\n\157\017\022\008\250\004\186\004\198\015n\008\254\t:\003\233\t\166\004\193\007\018\t>\000\162\011\206\004\210\007\022\003\233\003\233\011\173\011\173\015\166\003\233\tF\011\173\007\026\n\229\006M\006M\015\026\0152\001\154\006M\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\013\"\000\146\021\006\000\150\006\150\000\154\000\174\000\178\000\182\006\154\021\014\0065\005\229\008]\015\222\006\158\023&\t\158\011\206\005\205\023f\000\186\n\197\001\030\006\174\006\202\018\142\005\133\006\206\015N\005\133\023^\000\190\n\149\005\133\008:\005\133\019f\015\250\0039\017\202\005\133\005\133\013B\001*\008]\008]\008J\015r\n\213\008]\004\222\004\234\008\146\006\214\021v\008~\n\205\008\150\014\002\019\178\011\206\006U\001R\015\170\001V\003\249\000\206\t\154\008\158\n\221\022g\022k\006\234\001^\008\162\022o\006\238\008\166\001j\018\"\006\242\006\246\008\170\006\250\006e\022\139\022\143\004\246\008\174\0089\022\147\0065\005\n\005\026\002\146\005\030\0065\0065\006\254\007\002\015\226\005&\008\178\008\182\007\006\008\186\018\178\000\162\023\178\008\206\019~\0089\003\197\005*\019Z\008\218\007\014\n\173\005R\006U\023\154\0089\006u\005V\015\254\005^\t\158\019\166\005\130\008\250\017\186\005\138\0065\008\254\t:\006-\t\166\022\n\007\018\t>\005\142\002\133\006e\007\022\005\133\003\249\005\150\013\006\005\170\005\174\tF\0089\007\026\005\198\006u\006u\005\214\005\234\001\154\006u\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\005\242\000\146\021\006\000\150\006\150\000\154\000\174\000\178\000\182\006\154\021\014\005\250\001^\006\023\006.\006\158\012\022\001j\0066\006:\006Z\000\186\006r\001\030\006\174\006\202\0089\006\162\006\206\006\170\t\146\006\178\000\190\006\186\006\190\008:\006\198\006\222\006\230\008J\007>\0089\007J\007\146\001*\006-\000\162\008J\008~\008\n\006-\006-\0082\008z\006\214\008F\008~\008R\008\150\008Z\008b\008\149\006-\001R\008j\001V\004\021\000\206\008\154\008\158\008\190\008\198\008\214\006\234\001^\008\162\008\222\006\238\008\166\001j\008\230\006\242\006\246\008\170\006\250\008\238\006-\008\246\011\181\008\174\t2\tB\tJ\008\149\008\149\tV\tZ\tb\008\149\006\254\007\002\tf\tr\008\178\008\182\007\006\008\186\0039\000\162\tz\008\206\t\138\t\174\003\197\t\190\008]\008\218\007\014\t\198\t\158\t\202\t\242\0039\008e\t\254\n\006\nF\t\158\nf\nr\008\250\n\182\n\202\n\214\008\254\t:\004\021\t\166\n\238\007\018\t>\n\250\011\130\011\138\007\022\004\021\004\021\008]\008]\011\154\004\021\tF\008]\007\026\011\166\008e\008e\011\194\011\202\001\154\008e\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\011\222\000\146\011\234\000\150\006\150\000\154\000\174\000\178\000\182\006\154\015\214\003\177\011\242\011\246\011\254\006\158\012\014\012\"\012*\012.\012>\000\186\012F\001\030\006\174\006\202\003\177\012^\006\206\012f\012\146\0039\000\190\012\154\012\170\008:\0039\0039\004\162\012\178\012\182\012\190\012\206\012\242\001*\012\250\001^\008J\0039\023&\012\022\001j\012\254\008z\006\214\013\014\008~\013\022\008\150\013\026\013*\0132\013J\001R\013R\001V\013\162\000\206\008\154\008\158\013\234\013\246\0039\006\234\001^\008\162\014j\006\238\008\166\001j\000\162\006\242\006\246\008\170\006\250\014v\014\150\014\194\011\181\008\174\014\206\014\214\014\242\014\250\014\254\015\006\015\n\015\018\015\"\006\254\007\002\015:\015V\008\178\008\182\007\006\008\186\003\177\000\162\015z\008\206\023\138\003\177\003\177\015\138\015\142\008\218\007\014\005\237\015\150\015\154\015\162\015\178\011\181\003\177\003\177\015\194\t\158\015\202\015\206\008\250\015\234\016\006\016\026\008\254\t:\016*\t\166\016:\007\018\t>\016R\016b\016n\007\022\016\151\016\191\016\231\003\177\016\255\017#\tF\017;\007\026\017R\011\181\011\181\017b\017\138\001\154\011\181\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\017\155\000\146\017\242\000\150\006\150\000\154\000\174\000\178\000\182\006\154\018\007\018/\018;\018K\018S\006\158\018f\018o\018w\003\177\018\127\000\186\018\154\001\030\006\174\006\202\018\218\018\239\006\206\018\255\019\007\023\026\000\190\007\133\003\177\008:\019\019\019\031\019+\019>\019G\019O\019\138\019\190\001*\019\211\019\219\008J\007\133\019\231\019\247\019\255\020\n\008z\006\214\020\014\008~\020\027\008\150\020'\020.\020;\020G\001R\020O\001V\020Z\000\206\008\154\008\158\020c\020k\020w\006\234\001^\008\162\020\146\006\238\008\166\001j\0192\006\242\006\246\008\170\006\250\020\182\020\186\020\190\020\214\008\174\021V\021~\021\142\021\198\021\206\021\234\021\238\022\026\007\133\006\254\007\002\023v\017Z\008\178\008\182\007\006\008\186\022\030\000\162\022&\008\206\023\134\017^\022S\023\030\003\177\008\218\007\014\023\230\023\138\003\177\003\177\023*\023:\023B\023J\023s\t\158\023z\023\131\008\250\023\142\003\177\003\177\008\254\t:\023\158\t\166\023\194\007\018\t>\023\219\017j\000:\007\022\023\234\023\243\024\023\007\133\0243\024B\tF\024F\007\026\024J\024S\003\177\000\000\000\000\001\154\007\133\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\021\006\000\150\006\150\000\154\000\174\000\178\000\182\006\154\021\014\000\000\000\000\000\000\000\000\006\158\000\162\000\000\017V\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\000\000\000\006\206\000\000\000\000\017n\000\190\000\000\000\000\008:\000\000\000\000\000\000\000\000\017Z\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\017^\000\000\000\000\008\146\006\214\000\000\000\000\000\000\008\150\022\162\000\000\000\000\000\000\001R\000\000\001V\018B\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\017j\006\242\006\246\008\170\006\250\000\000\000\000\000\000\017Z\008\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017^\006\254\007\002\000\000\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\003\197\000\000\000\000\008\218\007\014\000\000\000\000\017V\000\000\000\000\008I\000\000\000\000\000\162\000\000\017j\000\000\008\250\000\000\000\000\000\000\008\254\t:\000\000\t\166\000\000\007\018\t>\017n\017Z\000\000\007\022\000\000\000\000\000\000\000\000\000\000\000\000\tF\017^\007\026\000\000\008I\008I\000\000\000\000\001\154\008I\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\162\000\150\006\150\000\154\000\174\000\178\000\182\006\154\017j\000\000\000\000\000\000\000\000\006\158\000\000\017n\018Z\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\000\000\000\006\206\000\000\000\000\000\000\000\190\n!\000\000\008:\000\000\000\000\000\000\000\000\017Z\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\017^\000\000\000\000\008\146\006\214\000\000\000\162\000\000\008\150\012n\000\000\000\000\000\000\001R\000\000\001V\000\000\000\206\t\154\008\158\000\000\017n\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\017j\006\242\006\246\008\170\006\250\000\000\000\000\000\000\011\145\008\174\017V\n!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\000\000\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\017Z\000\000\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\017^\011\145\000\000\000\000\000\162\000\000\000\000\000\000\008\250\000\000\000\000\000\000\008\254\t:\000\000\t\166\000\000\007\018\t>\017n\000\000\000\000\007\022\000\000\000\000\020V\000\000\000\000\017V\tF\017j\007\026\000\000\011\145\011\145\000\000\000\000\001\154\011\145\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\017Z\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\017^\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\162\000\000\006\206\000\000\000\000\000\000\000\190\000\000\005\133\008:\000\000\000\000\000\000\000\000\018\246\017n\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\146\006\214\000\000\005\133\000\000\008\150\021Z\000\000\000\000\000\000\001R\000\000\001V\005\133\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\008\170\006\250\000\000\000\162\000\000\000\000\008\174\017V\005\133\000\000\000\000\000\000\000\000\005\133\002\146\000\000\006\254\007\002\017n\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\017Z\000\000\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\017^\011\221\000\000\000\000\000\000\000\000\000\000\000\000\008\250\000\000\000\000\000\000\008\254\t:\000\000\t\166\000\000\007\018\t>\000\000\005\133\000\000\007\022\000\000\000\000\000\000\000\000\000\000\000\000\tF\019\238\007\026\000\000\011\221\011\221\005\133\000\000\001\154\011\221\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\000\000\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\162\000\000\006\206\000\000\000\000\000\000\000\190\000\000\000\000\008:\000\000\000\000\000\000\000\000\000\000\017n\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\146\006\214\000\000\000\000\000\000\008\150\021Z\000\000\000\000\000\000\001R\000\000\001V\000\000\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\008\170\006\250\000\000\000\000\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\000\000\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\000\000\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\000\000\011\217\000\000\000\000\000\000\000\000\000\000\000\000\008\250\000\000\000\000\000\000\008\254\t:\000\000\t\166\000\000\007\018\t>\000\000\000\000\000\000\007\022\000\000\000\000\000\000\000\000\000\000\000\000\tF\000\000\007\026\000\000\011\217\011\217\000\000\000\000\001\154\011\217\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\000\000\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\000\000\000\000\000\186\000\000\001\030\006\174\006\202\000\000\000\000\006\206\000\000\000\000\000\000\000\190\000\000\000\000\008:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\146\006\214\000\000\000\000\000\000\008\150\0146\000\000\000\000\000\000\001R\000\000\001V\000\000\000\206\t\154\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\008\170\006\250\000\000\000\000\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\000\000\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\000\000\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007}\000\000\000\000\008\250\000\000\t\146\000\000\008\254\t:\000\000\t\166\000\000\007\018\t>\008J\007}\000\000\007\022\000\000\000\000\000\000\000\000\000\000\008~\tF\000\000\007\026\000\000\0002\006&\000F\000b\001\154\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\186\000\000\001\030\000\000\006\202\007}\000\000\006\206\000\000\000\000\000\000\000\190\000\000\000\000\014\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\198\006\214\t\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\206\000\000\005\133\000\000\000\000\000\000\006\234\001^\000\000\007}\006\238\001f\001j\000\000\006\242\006\246\008\170\006\250\000\000\000\000\000\000\007}\000\000\000\000\005\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\005\133\005\133\000\000\000\000\007\006\000\000\000\000\000\162\000\000\000\000\0002\0006\000F\000b\000\000\000f\007\014\000j\000\134\000\000\000\138\000\000\000\146\000\000\000\150\005\133\000\154\000\174\000\178\000\182\005\133\002\146\000\000\000\000\005\133\000\000\t\166\000\000\007\018\014\202\000\000\000\000\000\186\007\022\001\030\000\000\001\"\000\000\000\000\001&\014\210\000\000\007\026\000\190\000\000\000\000\000\000\000\000\001\154\000\000\000\000\000\000\000\000\000\000\000\000\001*\005\133\000\000\001.\000\000\000\000\000\000\000\000\000\000\001F\001B\005\133\001J\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\017V\000\206\000\000\000\000\005\133\000\000\000\000\001Z\001^\000\000\000\000\001b\001f\001j\001\190\001n\001r\000\000\001v\000\000\000\000\000\000\017Z\000\000\005\133\000\000\000\000\005\133\005\133\000\000\000\000\005\133\017^\000\000\001z\000\000\006\158\000\000\000\000\001~\000\000\005\133\000\162\000\000\001\030\006\174\006\202\000\000\000\000\006\206\000\000\001\134\000\000\000\000\000\000\000\000\008:\0196\000\000\000\000\n!\001\138\017j\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\142\008\202\006\214\000\000\000\000\001\146\008\150\000\000\003\137\000\000\000\000\001R\n!\001V\001\150\000\000\000\000\008\158\000\000\000\000\001\154\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\000\000\006\250\000\000\000\000\000\162\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\007\002\000\000\017n\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\000\000\000\000\000\000\008\218\007\014\006\158\000\000\000\000\000\000\n!\000\000\000\000\000\000\001\030\006\174\006\202\000\000\008\250\006\206\000\000\000\000\008\254\t:\000\000\000\000\008:\007\018\t>\000\000\000\000\000\000\007\022\000\000\000\000\001*\000\000\000\000\000\000\tF\000\000\007\026\000\000\000\000\006\210\006\214\000\000\001\154\000\000\008\150\000\000\000\000\000\000\000\000\001R\004\173\001V\000\000\000\000\000\000\008\158\000\000\000\000\000\000\006\234\001^\008\162\000\000\006\238\008\166\001j\000\000\006\242\006\246\000\000\006\250\000\000\004\173\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\004\173\000\000\000\000\006\254\007\002\000\000\000\000\008\178\008\182\007\006\008\186\000\000\000\162\000\000\008\206\000\000\000\000\000\000\000\000\000\000\008\218\007\014\000\000\000\000\000\000\000\000\000\000\000\000\n\021\000\000\004\173\004\173\011\241\000\000\008\250\011\241\000\000\000\000\008\254\t:\000\000\000\000\000\000\007\018\t>\000\000\000\000\000\000\007\022\000\000\011\241\000\000\000\000\n\021\011\241\tF\000\000\007\026\001\178\011\241\000\000\000\000\000\000\001\154\000\000\011\241\000\000\000\000\011\241\011\241\000\000\011\241\011\241\000\000\000\000\001\186\004\173\011\241\002\210\000\000\000\000\011\241\000\000\000\000\011\241\000\000\011\241\011\241\000\000\000\000\000\000\004\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\241\000\000\011\241\000\000\n\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\241\000\000\000\000\0002\t\182\000F\000b\002\222\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\021\006\000\150\006\150\000\154\000\174\000\178\000\182\006\154\021\014\011\241\011\241\011\241\000\000\011\241\011\241\002\226\000\000\011\241\000\000\000\186\000\000\004%\000\000\000\000\004%\002\234\000\000\000\000\000\000\011\241\000\190\000\000\011\241\011\241\011\241\011\241\000\000\000\000\000\000\004%\011\241\011\241\011\241\004%\011\241\011\241\011\241\004%\004%\000\000\000\000\000\202\000\000\000\000\004%\017V\000\000\004%\004%\000\000\004%\004%\000\000\000\000\004%\000\206\004%\004%\000\000\000\000\004%\000\000\000\000\004%\000\000\004%\004%\017Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017^\000\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004%\000\000\004%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\162\000\000\004%\000\000\000\000\003\197\018^\000\000\000\000\004%\000\000\017j\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004%\004%\004%\000\000\004%\004\193\004%\n!\004%\000\000\001=\001=\001=\001=\000\000\001=\004%\001=\001=\000\000\001=\000\000\001=\004%\001=\004%\001=\001=\001=\001=\000\162\004%\004%\004%\017F\004%\004%\004%\000\000\000\000\000\000\001=\001=\001=\000\000\017n\000\000\000\000\001=\000\000\000\000\000\000\000\000\001=\000\000\000\000\000\000\001=\000\000\000\000\000\000\001=\000\000\000\000\017J\n!\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\001=\000\000\000\000\000\000\000\000\001=\000\000\000\000\0002\0006\000F\000b\000\000\000f\001=\000j\000\134\000\000\000\138\017V\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\000\001=\000\000\000\000\001=\000\000\000\000\000\186\017Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001=\000\000\020\006\000\000\000\000\001=\000\000\001=\004)\000\000\001=\004)\017N\000\000\000\000\000\000\000\000\000\000\001=\000\000\000\000\001=\000\000\000\202\000\000\000\000\004)\000\000\018\130\000\000\004)\000\000\017j\000:\004)\004)\001=\000\206\000\000\001=\001=\004)\000\000\000\000\004)\004)\000\000\004)\004)\000\000\017\158\004)\000\000\004)\004)\000\000\000\000\004)\000\000\000\000\004)\000\000\004)\004)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\162\000\000\000\000\000\000\000\000\004)\000\000\004)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017n\000\000\004)\000\000\000\000\000\000\021\n\000F\000b\004)\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\021\006\000\150\006\150\000\154\000\174\000\000\000\182\006\154\021\014\004)\004)\004)\000\000\004)\004\197\004)\000\000\004)\000\000\000\186\000\000\012E\000\000\000\000\012E\004)\000\000\000\000\000\000\004)\000\190\000\000\004)\000\000\004)\000\000\000\000\000\000\000\000\012E\004)\004)\004)\012E\004)\004)\004)\007.\012E\000\000\000\000\000\000\000\000\000\000\012E\000\000\000\000\012E\012E\000\000\012E\012E\000\000\000\000\0076\000\206\012E\007B\000\000\000\000\012E\000\000\000\000\012E\000\000\012E\012E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\182\000F\000b\000\000\000f\000\000\000j\000\134\000\000\000\138\012E\000\146\012E\000\150\000\000\000\154\000\174\000\000\000\182\000\000\000\000\000\000\012E\000\000\000\000\003\197\000\000\000\000\000\000\007N\004I\000\186\000J\004I\000N\004I\000V\004I\000\000\004I\000\000\000\000\000\190\000Z\004I\004I\000\000\012E\012E\012E\000\000\012E\000\000\007R\000\000\012E\000\000\004I\000\000\000\000\000\000\000\000\000\000\007Z\000\000\000\000\000\000\004I\004I\000\000\012E\000\000\012E\004I\000\000\0035\000\000\000\206\012E\012E\012E\000\000\012E\012E\012E\000\000\000\000\000\000\000\000\004I\0035\000\000\004I\000\000\000\000\000\000\000\000\004I\004I\000\000\000\000\004I\000^\000\000\000\000\000\000\0035\000\000\000\000\004I\000\000\000\000\000\000\004I\004I\000\000\000\000\000\000\000\162\000\000\000\000\000\000\000\000\004I\000\000\004M\000\000\000n\004M\000r\004M\000z\004M\004I\004M\000\000\000\000\000\000\000~\004M\004M\000\000\005\133\004I\000\000\005\133\000\000\000\000\004I\005\133\000\000\005\133\004M\000\000\000\000\000\000\005\133\005\133\004I\000\000\000\000\000\000\004M\004M\000\000\000\000\000\000\000\000\004M\000\000\000\000\0035\000\000\000\000\000\000\000\000\0035\0035\004I\000\000\000\000\004I\004I\000\000\004M\004I\000\000\004M\0035\000\000\004I\004I\004M\004M\000\000\004I\004M\000\130\000\000\000\000\000\000\005\133\000\000\0035\004M\000\000\000\000\000\000\004M\004M\000\218\000\000\0035\000\000\023^\000\000\000\000\000\000\004M\000\000\000\000\001^\000\000\000\000\000\000\001f\001j\000\000\004M\000\000\000\000\000\000\n\017\n\017\n\017\n\017\000\000\n\017\004M\n\017\n\017\000\000\n\017\004M\n\017\000\000\n\017\000\000\n\017\n\017\n\017\n\017\000\000\004M\000\000\000\162\000\000\000\000\000\000\000\000\005\133\000\000\000\000\n\017\n\017\n\017\001\137\000\000\000\000\001\137\n\017\000\000\000\000\004M\000\000\n\017\004M\004M\000\000\017\174\004M\000\000\017V\017\182\001\137\004M\004M\000\000\001\137\n\017\004M\000\000\000\000\001\137\000\000\000\000\n\017\000\000\000\000\001\137\000\000\n\017\001\137\001\137\017Z\001\137\001\137\000\000\000\000\000\000\n\017\001\137\000\000\000\000\017^\001\137\000\000\000\000\001\137\000\000\001\137\001\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\017\000\000\000\000\n\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\n-\001\137\017j\n\017\000\000\000\000\000\000\000\000\n\017\000\000\n\017\001\137\000\000\n\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\017\000\000\000\000\n\017\n-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\001\137\001\206\n\017\001\137\001\137\018\n\n\017\001\137\000\000\000\000\000\000\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\001\137\001\137\001\137\001\137\017n\000\000\000\000\000\000\002v\001\137\001\137\000\000\001\137\001\137\001\137\n\001\n\001\n\001\n\001\000\000\n\001\000\000\n\001\n\001\n-\n\001\000\000\n\001\000\000\n\001\000\000\n\001\n\001\n\001\n\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\001\n\001\n\001\000\000\000\000\000\000\000\000\n\001\000\000\000\000\000\000\000\000\n\001\0002\000\214\000F\000b\000\000\000f\000\000\000j\000\134\000\000\000\138\000\000\000\146\n\001\000\150\000\000\000\154\000\174\000\178\000\182\n\001\000\000\000\000\000\000\000\000\n\001\000\000\000\000\n\005\n\005\n\005\n\005\000\186\n\005\n\001\n\005\n\005\000\000\n\005\000\000\n\005\000\000\n\005\000\190\n\005\n\005\n\005\n\005\000\000\000\000\000\000\000\000\000\000\000\000\n\001\000\000\000\000\n\001\000\000\n\005\n\005\n\005\000\000\000\000\000\202\000\000\n\005\000\000\000\000\n\001\000\230\n\005\000\000\000\000\n\001\018\014\n\001\000\000\000\206\n\001\000\000\000\000\000\000\000\000\000\000\n\005\000\000\n\001\000\000\000\000\n\001\000\000\n\005\000\000\000\000\000\000\000\000\n\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\001\n\005\004\129\017\178\n\001\004\129\000R\004\129\000\000\004\129\000\000\004\129\000\000\000\000\000\162\000\000\004\129\004\129\000\000\000\000\000\000\n\005\000\000\000\000\n\005\000\000\000\000\000\000\000\000\004\129\000\000\000\000\000\000\000\234\000\000\000\000\n\005\000\000\000\000\004\129\004\129\n\005\000\000\n\005\000\000\004\129\n\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\005\000\000\011u\n\005\000\000\000\000\000\000\004\129\000\000\000\000\004\129\000\000\000\000\000\000\000\000\004\129\004\129\000\000\n\005\004\129\004\129\000\000\n\005\000\000\000\000\000\000\000\000\004\129\000\000\000\000\000\000\004\129\004\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\129\000\000\004\133\000\000\000\000\004\133\000v\004\133\000\000\004\133\004\129\004\133\000\000\000\000\000\000\000\000\004\133\004\133\000\000\000\000\004\129\000\000\000\000\000\000\000\000\004\129\000\000\000\000\000\000\004\133\000\000\000\000\000\000\000\000\000\000\004\129\000\000\000\000\011\018\004\133\004\133\000\000\000\000\000\000\000\000\004\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\129\011\026\000\000\004\129\004\129\000\000\004\133\004\129\000\000\004\133\000\000\000\000\004\129\004\129\004\133\004\133\011\"\004\129\004\133\004\133\000\000\000\000\011b\011j\000\000\000\000\004\133\000\000\000\000\000\000\004\133\004\133\011B\000\000\000\000\011*\000\000\011:\000\000\000\000\004\133\000\000\004\137\000\000\000\000\004\137\000\142\004\137\000\000\004\137\004\133\004\137\000\000\000\000\000\000\000\000\004\137\004\137\011J\000\000\004\133\000\000\000\000\000\000\000\000\004\133\000\000\000\000\000\000\004\137\000\000\000\000\000\000\000\000\000\000\004\133\000\000\000\000\000\000\004\137\004\137\000\000\000\000\000\000\000\000\004\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\133\011R\000\000\004\133\004\133\000\000\004\137\004\133\0112\004\137\000\000\000\000\004\133\004\133\004\137\004\137\000\000\004\133\004\137\004\137\005\001\000\000\000\000\000\000\000\000\000\000\004\137\000\000\000\000\000\000\004\137\004\137\000\000\000\000\000\000\011r\011Z\000\000\000\000\000\000\004\137\000\000\004\189\000\000\000\000\004\189\000\000\004\189\000\000\004\189\004\137\004\189\000\000\000\000\000\000\000\000\004\189\004\189\000\000\000\000\004\137\000\000\000\000\000\000\000\000\004\137\000\000\000\000\000\000\004\189\000\000\000\000\000\000\000\000\000\000\004\137\000\000\000\000\000\000\004\189\004\189\000\000\000\000\000\000\000\000\004\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\137\000\000\001\238\004\137\004\137\002>\004\189\004\137\000\000\004\189\000\210\000\000\004\137\004\137\004\189\004\189\000\000\004\137\004\189\004\189\001\246\000\000\000\000\000\000\002\005\000\000\004\189\000\000\000\000\002\005\004\189\004\189\000\000\000\000\000\000\001\254\000\000\000\000\002\005\002\005\004\189\002^\002f\000\000\000\000\000\000\000\000\002\005\000\000\000\000\004\189\002\030\000\000\000\000\002\006\000\000\002\022\002\005\000\000\000\000\004\189\000\000\000\000\000\000\000\000\004\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\189\000\000\002&\000\000\002\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\005\000\000\000\000\000\000\000\000\000\000\004\189\000\000\000\000\004\189\004\189\000\000\000\000\004\189\000\000\000\000\000\000\000\000\004\189\004\189\000\000\000\000\000\000\004\189\000\000\002\005\002.\000\000\000\000\002\005\002\005\000\000\000\000\002\014\000\000\000\000\000\000\000}\000\000\000\000\000}\000\000\000\000\000\000\000\000\002\005\000\000\000\000\002\005\002\005\002\005\002\005\000\000\000\000\000\000\001\246\000\000\002\005\002\005\000}\002n\0026\002\005\000\000\000}\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000}\000}\000\000\000}\000}\000\000\000\000\000\000\000\000\000}\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000}\000e\000\000\000\000\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\002&\000\000\000}\000e\000\000\000\000\000\000\000\000\000e\000\000\000\000\000\000\000}\000\000\001\254\000\000\000\000\000e\000e\000\000\000e\000e\000\000\000\000\000\000\000\000\000e\000\000\000\000\000\000\000e\000\000\000\000\002\006\000\000\002\022\000e\000}\002.\000\000\000\000\000}\000}\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000}\000e\000\000\000}\000}\000}\000}\000\000\000\000\000\000\000\000\000e\000}\000}\000\000\000}\0026\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000e\000\000\000\000\000e\000e\000\000\000\000\002\014\000\000\000\000\000\000\000]\000\000\000\000\000]\000\000\000\000\000\000\000\000\000e\000\000\000\000\000e\000e\000e\000e\000\000\000\000\000\000\000]\000\000\000e\000e\000]\000e\000e\000e\000\000\000]\000\000\000\000\000\000\000\000\000\000\000]\000\000\000\000\000]\000]\000\000\000]\000]\000\000\000\000\000\000\000\000\000]\000\000\000\000\000\000\000]\000\000\000\000\002\006\000\000\000]\000]\000a\000\000\000\000\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000]\000\000\000]\000a\000\000\000\000\000\000\000\000\000a\000\000\000\000\000\000\000]\000\000\000a\000\000\000\000\000a\000a\000\000\000a\000a\000\000\000\000\000\000\000\000\000a\000\000\000\000\000\000\000a\000\000\000\000\002\006\000\000\000a\000a\000]\000]\000\000\000\000\000]\000]\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000]\000a\000\000\000]\000]\000]\000]\000\000\000\000\000\000\000\000\000a\000]\000]\000\000\000]\000]\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000\000\000a\000a\000\000\000\000\002\014\000\000\000\000\000\000\000q\000\000\000\000\000q\000\000\000\000\000\000\000\000\000a\000\000\000\000\000a\000a\000a\000a\000\000\000\000\000\000\001\246\000\000\000a\000a\000q\000a\000a\000a\000\000\000q\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000q\000q\000\000\000q\000q\000\000\000\000\000\000\000\000\000q\000\000\000\000\000\000\000q\000\000\000\000\002\006\000\000\002\022\000q\000i\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\002&\000\000\000q\000i\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000q\000\000\001\254\000\000\000\000\000i\000i\000\000\000i\000i\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000i\000\000\000\000\002\006\000\000\002\022\000i\000q\000q\000\000\000\000\000q\000q\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000q\000i\000\000\000q\000q\000q\000q\000\000\000\000\000\000\000\000\000i\000q\000q\000\000\000q\000q\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000i\000\000\000\000\000i\000i\000\000\000\000\002\014\000\000\000\000\000\000\000m\000\000\000\000\000m\000\000\000\000\000\000\000\000\000i\000\000\000\000\000i\000i\000i\000i\000\000\000\000\000\000\001\246\000\000\000i\000i\000m\000i\000i\000i\000\000\000m\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000m\000m\000\000\000m\000m\000\000\000\000\000\000\000\000\000m\000\000\000\000\000\000\000m\000\000\000\000\002\006\000\000\002\022\000m\000u\000\000\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\002&\000\000\000m\000u\000\000\000\000\000\000\000\000\000u\000\000\000\000\000\000\000m\000\000\001\254\000\000\000\000\000u\000u\000\000\000u\000u\000\000\000\000\000\000\000\000\000u\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000u\000m\000m\000\000\000\000\000m\000m\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000m\000u\000\000\000m\000m\000m\000m\000\000\000\000\000\000\000\000\000u\000m\000m\000\000\000m\000m\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\002.\000\000\000\000\000u\000u\000\000\000\000\002\014\000\000\000\000\000\000\001\238\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000u\000\000\000\000\000u\000u\000u\000u\000\000\000\000\000\000\001\246\000\000\000u\000u\000\133\000u\000u\000u\000\000\000\133\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000\133\000\133\000\000\000\133\002f\000\000\000\000\000\000\000\000\000\133\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000\133\001\238\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\002&\000\000\000\133\000y\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\133\000\000\001\254\000\000\000\000\000y\000y\000\000\000y\000y\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000y\000\133\002.\000\000\000\000\000\133\000\133\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\133\000y\000\000\000\133\000\133\000\133\000\133\000\000\000\000\000\000\000\000\000y\000\133\000\133\000\000\002n\0026\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\002.\000\000\000\000\000y\000y\000\000\000\000\002\014\000\000\000\000\000\000\001\238\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000y\000\000\000\000\000y\000y\000y\000y\000\000\000\000\000\000\001\246\000\000\000y\000y\000\129\000y\0026\000y\000\000\000\129\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000\129\000\129\000\000\000\129\002f\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\002\030\000\000\000\000\002\006\000\000\002\022\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\004\157\000\000\000\000\004\157\000\000\004\157\000\000\004\157\000\000\004\157\000\000\000\000\000\000\000\000\004\157\004\157\000\000\000\000\000\000\000\000\000\000\000\129\002.\000\000\000\000\000\129\000\129\004\157\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\157\004\157\000\000\000\000\000\129\000\000\004\157\000\129\000\129\000\129\000\129\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\000\000\129\0026\000\129\004\157\000\000\000\000\004\157\005\226\000\000\000\000\000\000\004\157\004\157\000\000\000\000\004\157\004\157\000\000\000\000\000\000\000\000\000\000\000\000\004\157\000\000\000\000\000\000\004\157\004\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\157\000\000\000\000\000\000\0002\0006\000F\000b\000\000\000f\004\157\000j\000\134\000\000\000\138\004\157\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\004\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\133\000\000\018\022\000\186\0182\000\000\000\000\000\000\000\000\018>\000\000\000\000\004\157\000\000\000\190\004\157\004\157\000\000\000\000\004\157\000\000\000\000\005\133\000\000\004\157\004\157\000\000\000\000\018V\004\157\000\000\000\000\005\133\005\133\000\000\000\202\000\000\000\000\005\133\005\133\018\130\000\000\005\133\000\000\005\133\000\000\005\133\000\000\005\133\000\206\000\000\000\000\000\000\005\133\005\133\000\000\000\000\005\133\000\000\000\000\000\000\000\000\005\133\002\146\000\000\000\000\005\133\000\000\000\000\018\162\000\000\000\000\018\242\000\000\005\133\000\000\005\133\005\133\005\133\005\133\000\000\000\000\005\133\000\000\019\n\000\000\000\000\000\000\005\133\019\022\000\000\0081\000\000\000\000\019\"\000\000\000\000\000\000\005\133\000\000\000\000\005\133\019.\000\000\000\000\019\222\005\133\002\146\005\133\000\000\005\133\005\133\000\000\000\000\000\000\000\000\000\000\000\000\005\133\000\000\019\234\000\000\005\133\005\133\020\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\133\005\133\000\000\000\000\005\133\005\133\000\000\000\000\005\133\000\000\005\133\000\000\000\000\005\133\005\133\005\133\000\000\000\000\005\133\000\000\000\000\000\000\000\000\000\000\n\198\005\133\000\000\000\000\000\000\003m\000\000\003m\000\000\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\133\000\000\000\000\005\133\005\133\003m\000\000\005\133\000\000\000\000\000\000\000\000\005\133\005\133\003m\003m\000\000\005\133\003m\003m\000\000\000\000\000\000\000\000\003m\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\000\000\000\000\003m\003m\003m\000\000\003m\003m\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\000\000\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\003m\001\161\000\000\000\000\000\000\000\000\000\000\000\000\003m\000\000\003m\000\000\003m\000\000\000\000\000\000\001\161\000\000\000\000\000\000\001\161\000\000\003m\000\000\000\000\001\161\000\000\003m\000\000\000\000\000\000\001\161\000\000\003m\001\161\001\161\003m\001\161\001\161\000\000\000\000\000\000\003m\001\161\000\000\000\000\001\030\001\161\t\226\000\000\001\161\t\230\001\161\001\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\001\161\000\000\001\161\t\234\n>\000\000\000\000\n\166\n\190\000\000\000\000\000\000\001\161\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\n\001^\000\000\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\001\161\001\161\007~\000\000\001\161\000\000\000\000\000\000\001\161\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\000\000\n\"\000\000\000\000\000\162\000\000\001\161\000\000\001\161\000\000\000\000\000\000\000\000\n*\007\134\001\161\001\161\000\000\001\161\001\161\001\161\005\173\001\030\n\194\t\226\n\222\000\000\t\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n.\000\000\000\000\000\000\000\000\n2\000\000\000\000\001*\000\000\000\000\011\186\000\000\000\000\n6\000\000\000\000\t\234\n>\000\000\001\154\n\166\n\190\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\n\001^\000\000\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\000\000\n\"\000\000\001\030\000\162\t\226\000\000\000\000\t\230\000\000\000\000\000\000\000\000\n*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\173\000\000\n\194\001*\n\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\234\n>\n.\000\000\n\166\n\190\000\000\n2\000\000\000\000\001R\000\000\001V\n\230\000\000\000\000\n6\000\000\000\000\000\000\n\n\001^\001\154\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\000\000\n\"\000\000\001\030\000\162\t\226\000\000\000\000\t\230\000\000\000\000\000\000\000\000\n*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\173\000\000\n\194\001*\n\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\234\n>\n.\000\000\n\166\n\190\000\000\n2\000\000\000\000\001R\000\000\001V\005\025\000\000\000\000\n6\000\000\000\000\000\000\n\n\001^\001\154\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\000\000\n\"\000\000\000\000\000\162\000\000\000\000\000\000\012)\000\000\000\000\012)\000\000\n*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\173\000\000\n\194\000\000\n\222\012)\000\000\000\000\000\000\012)\000\000\000\000\000\000\003V\n.\000\000\000\000\000\000\000\000\n2\012)\000\000\000\000\000\000\012)\001\189\012)\012)\n6\000\000\003^\000\000\000\000\003j\001\154\001\030\012)\t\226\000\000\012)\t\230\012)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\012)\000\000\000\000\t\234\n>\000\000\000\000\n\166\n\190\000\000\000\000\000\000\012)\001R\000\000\001V\000\000\000\000\000\000\003v\000\000\000\000\000\000\n\n\001^\000\000\000\000\n\014\008\166\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\012)\012)\000\000\012)\000\000\003z\000\000\012)\000\000\000\000\000\000\006\254\n\030\000\000\000\000\003\130\000\000\n\"\000\000\012)\000\162\000\000\000\000\000\000\012)\012)\000\000\000\000\001\137\n*\012)\001\137\000\000\000\000\012)\012)\012)\005\173\000\000\000\000\000\000\n\222\000\000\000\000\000\000\000\000\001\137\000\000\000\000\000\000\000\000\n.\000\000\000\000\000\000\001\137\n2\000\000\000\000\000\000\000\000\001\137\001\201\000\000\000\000\n6\000\000\001\137\001\137\000\000\000\000\001\154\000\000\000\000\000\000\007\178\000\000\001\137\008\002\000\000\001\137\000\000\001\137\001\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\186\000\000\000\000\000\000\002\021\000\000\000\000\000\000\000\000\002\021\001\137\000\000\001\137\000\000\000\000\007\194\000\000\000\000\002\021\002\021\000\000\008\018\008\026\000\000\000\000\000\000\000\000\002\021\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\002\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\001\137\001\198\000\000\001\137\001\137\000\000\000\000\001\137\000\000\007\234\000\000\002\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\000\000\002\021\001\137\001\137\000\000\001\137\000\000\000\000\000\000\000\000\002\130\001\137\001\137\000\000\001\137\001\137\001\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\021\007\242\000\000\000\000\002\021\000\000\000\000\000\000\007\210\000\000\000\000\000\000\001%\000\000\000\000\001%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\021\000\000\002\021\000\000\000\000\000\000\000\000\007\186\000\000\002\021\002\021\001%\008\"\007\250\002\021\000\000\001%\000\000\000\000\000\000\000\000\000\000\007\194\000\000\000\000\001%\001%\000\000\001%\001%\000\000\000\000\000\000\000\000\001%\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001%\001\013\000\000\000\000\001\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\007\234\000\000\001%\001\013\000\000\000\000\000\000\000\000\001\013\000\000\000\000\000\000\001%\000\000\007\194\000\000\000\000\001\013\001\013\000\000\001\013\001\013\000\000\000\000\000\000\000\000\001\013\000\000\000\000\000\000\001\013\000\000\000\000\007\202\000\000\007\218\001\013\001%\007\242\000\000\000\000\001%\000\000\000\000\000\000\007\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\000\000\001\013\000\000\001%\000\000\001%\000\000\000\000\000\000\000\000\000\000\001\013\001%\001%\000\000\001%\007\250\001%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\001\013\000\000\000\000\001\013\000\000\000\000\000\000\007\210\000\000\000\000\000\000\001\005\000\000\000\000\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\000\000\001\013\000\000\000\000\000\000\000\000\001\005\000\000\001\013\001\013\001\005\001\013\001\013\001\013\000\000\001\005\000\000\000\000\000\000\000\000\000\000\001\005\000\000\000\000\001\005\001\005\000\000\001\005\001\005\000\000\000\000\000\000\000\000\001\005\000\000\000\000\000\000\001\005\000\000\000\000\007\202\000\000\001\005\001\005\001\t\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\001\005\000\000\001\005\001\t\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\001\005\000\000\001\t\000\000\000\000\001\t\001\t\000\000\001\t\001\t\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\001\t\000\000\000\000\007\202\000\000\001\t\001\t\001\005\001\005\000\000\000\000\001\005\000\000\000\000\000\000\007\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000\000\001\t\000\000\001\005\000\000\001\005\000\000\000\000\000\000\000\000\000\000\001\t\001\005\001\005\000\000\001\005\001\005\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\001\t\000\000\000\000\001\t\000\000\000\000\000\000\007\210\000\000\000\000\000\000\001\025\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000\000\001\t\000\000\000\000\000\000\000\000\007\186\000\000\001\t\001\t\001\025\001\t\001\t\001\t\000\000\001\025\000\000\000\000\000\000\000\000\000\000\007\194\000\000\000\000\001\025\001\025\000\000\001\025\001\025\000\000\000\000\000\000\000\000\001\025\000\000\000\000\000\000\001\025\000\000\000\000\007\202\000\000\007\218\001\025\001\017\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\186\007\234\000\000\001\025\001\017\000\000\000\000\000\000\000\000\001\017\000\000\000\000\000\000\001\025\000\000\007\194\000\000\000\000\001\017\001\017\000\000\001\017\001\017\000\000\000\000\000\000\000\000\001\017\000\000\000\000\000\000\001\017\000\000\000\000\007\202\000\000\007\218\001\017\001\025\001\025\000\000\000\000\001\025\000\000\000\000\000\000\007\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\001\017\000\000\001\025\000\000\001\025\000\000\000\000\000\000\000\000\000\000\001\017\001\025\001\025\000\000\001\025\001\025\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\001\017\000\000\000\000\001\017\000\000\000\000\000\000\007\210\000\000\000\000\000\000\001\021\000\000\000\000\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\001\017\000\000\000\000\000\000\000\000\007\186\000\000\001\017\001\017\001\021\001\017\001\017\001\017\000\000\001\021\000\000\000\000\000\000\000\000\000\000\007\194\000\000\000\000\001\021\001\021\000\000\001\021\001\021\000\000\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\000\000\007\202\000\000\007\218\001\021\001\029\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\186\007\234\000\000\001\021\001\029\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\001\021\000\000\007\194\000\000\000\000\001\029\001\029\000\000\001\029\001\029\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001\029\001\021\001\021\000\000\000\000\001\021\000\000\000\000\000\000\007\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\234\000\000\001\029\000\000\001\021\000\000\001\021\000\000\000\000\000\000\000\000\000\000\001\029\001\021\001\021\000\000\001\021\001\021\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\007\242\000\000\000\000\001\029\000\000\000\000\000\000\007\210\000\000\000\000\000\000\007\178\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\001\029\000\000\000\000\000\000\000\000\007\186\000\000\001\029\001\029\001-\001\029\001\029\001\029\000\000\001-\000\000\000\000\000\000\000\000\000\000\007\194\000\000\000\000\001-\001-\000\000\001-\008\026\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001-\007\178\000\000\000\000\001!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\186\007\234\000\000\001-\001!\000\000\000\000\000\000\000\000\001!\000\000\000\000\000\000\001-\000\000\007\194\000\000\000\000\001!\001!\000\000\001!\001!\000\000\000\000\000\000\000\000\001!\000\000\000\000\000\000\007\226\000\000\000\000\007\202\000\000\007\218\001!\001-\007\242\000\000\000\000\001-\000\000\000\000\000\000\007\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\234\000\000\001!\000\000\001-\000\000\001-\000\000\000\000\000\000\000\000\000\000\001!\001-\001-\000\000\008\"\007\250\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\007\242\000\000\000\000\001!\000\000\000\000\000\000\007\210\000\000\000\000\000\000\007\178\000\000\000\000\001)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\001!\000\000\000\000\000\000\000\000\007\186\000\000\001!\001!\001)\001!\007\250\001!\000\000\001)\000\000\000\000\000\000\000\000\000\000\007\194\000\000\000\000\001)\001)\000\000\001)\008\026\000\000\000\000\000\000\000\000\001)\000\000\000\000\001\030\007\226\001\"\000\000\007\202\001&\007\218\001)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008>\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\000\000\007\234\000\000\001)\001>\001B\000\000\001J\000\000\t\222\000\000\000\000\000\000\001)\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\001^\000\000\n\206\001b\001f\001j\000\000\001n\001r\000\000\001v\000\000\000\000\001)\007\242\000\000\000\000\001)\000\000\000\000\000\000\007\210\000\000\000\000\000\000\000\000\001z\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\162\000\000\001)\000\000\001)\000\000\000\000\000\000\000\000\001\134\000\000\001)\001)\000\000\001)\007\250\001)\000\000\000\000\001\138\008A\000\000\001\030\000\000\001\"\000\000\000\000\001&\000\000\000\000\000\000\001\142\000\000\000\000\000\000\000\000\001\146\008A\000\000\008A\000\000\008A\000\000\001*\000\000\001\150\001.\000\000\000\000\000\181\000\000\001\154\001>\001B\000\000\001J\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\011\026\000\000\000\000\000\000\000\000\001Z\001^\000\000\000\000\001b\001f\001j\000\000\001n\001r\011\"\001v\000\000\000\000\000\000\000\000\000\181\000\181\001\030\000\000\001\"\000\000\000\000\001&\000\000\000\000\011B\001z\000\000\011*\000\000\011:\001~\014\186\000\000\000\162\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\001\134\000\000\000\000\000\000\001>\001B\000\000\001J\011J\000\000\001\138\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\001\142\000\000\001Z\001^\000\000\001\146\001b\001f\001j\000\000\001n\001r\000\000\001v\001\150\000\000\000\000\000\000\000\000\000\000\001\154\000\000\000\000\000\000\011R\000\000\000\000\000\000\000\000\001z\000\000\0112\000\000\000\000\001~\000\000\001\030\000\162\001\"\000\000\000\000\001&\000\000\000\181\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\138\001*\000\181\011Z\001.\000\000\000\000\000\000\000\000\000\000\001>\004\226\001\142\001J\000\000\000\000\000\000\001\146\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\001\150\000\000\000\000\000\000\001Z\001^\001\154\000\000\001b\001f\001j\000\000\001n\001r\000\000\001v\000\000\000\000\000\000\006~\006J\000b\001\030\000f\001\"\006N\000\134\001&\000\138\000\000\000\146\001z\000\150\000\000\000\154\000\174\001~\000\182\000\000\000\162\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\001\134\000\000\000\186\000\000\001>\001\130\000\000\001J\000\000\000\000\001\138\000\000\000\000\000\190\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\001\142\000\000\001Z\001^\000\000\001\146\001b\001f\001j\000\000\001n\001r\000\000\001v\001\150\000\000\000\000\000\000\000\000\000\000\001\154\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\001z\000\000\003\202\000\000\000\000\001~\000\000\003e\000\162\003e\000\000\000\000\003e\000\000\000\000\000\000\000\000\001\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\138\003e\000\000\000\000\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\001\142\003e\000\000\000\000\000\000\001\146\000\000\000\000\003e\000\000\003e\000\000\000\000\000\000\001\150\000\000\000\000\000\000\003e\003e\001\154\000\000\003e\003e\003e\004%\003e\003e\004%\003e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004%\000\000\003e\000\000\000\000\000\000\000\000\003e\004%\004%\003e\000\000\000\000\000\000\000\157\004%\000\000\000\000\000\000\003e\000\000\004%\004%\000\000\000\000\004%\000\000\000\000\004%\000\000\000\000\004%\000\157\000\000\004%\000\000\004%\004%\000\000\000\000\000\000\003e\000\000\000\000\000\000\000\000\003e\011\"\000\000\000\000\000\000\000\000\000\000\000\157\000\157\003e\000\000\004%\000\000\000\000\000\000\003e\000\000\000\157\000\000\000\000\011*\000\000\011:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004%\000\000\000\000\000\000\000\000\000\000\001\030\000\000\0012\000\000\000\000\0016\000\000\000\157\000\000\000\000\000\000\000\000\000\000\004%\004%\000\000\000\000\004\193\004%\000\000\004%\001*\000\000\000\000\001.\000\000\000\000\000\000\004%\000\000\001:\001N\004%\001J\000\000\004%\000\000\000\000\000\000\000\000\001R\000\000\001V\004%\000\000\000\157\000\000\004%\004%\000\000\003\022\001^\0112\000\000\003\026\001f\001j\000\000\003\030\003\"\000\000\003&\000\000\000\000\000\157\000\000\000\000\000\000\001\030\000\000\0012\000\000\000\000\0016\000\000\000\000\000\000\003*\000\000\000\157\000\157\000\000\003.\000\000\000\000\000\162\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\0036\000\000\000\000\000\000\001:\004\202\000\000\001J\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\000\000\000\000\003:\000\000\003\022\001^\000\000\003>\003\026\001f\001j\000\000\003\030\003\"\000\000\003&\003B\000\000\000\000\000\000\000\000\000\000\001\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003*\000\000\000\000\000\000\000\000\003.\000\000\001\030\000\162\0012\000\000\000\000\0016\000\000\000\000\000\000\000\000\0036\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\001.\000\000\000\000\000\000\000\000\000\000\001:\0032\003:\001J\000\000\000\000\000\000\003>\000\000\000\000\001R\000\000\001V\000\000\000\000\000\000\003B\000\000\000\000\000\000\003\022\001^\001\154\000\000\003\026\001f\001j\000\000\003\030\003\"\000\000\003&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003*\000\000\000\000\000\000\000\000\003.\000\000\000\000\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0036\0002\006&\000F\000b\006>\000f\006\142\000j\000\134\006\146\000\138\000\000\000\146\000\000\000\150\006\150\000\154\000\174\000\178\000\182\006\154\003:\000\000\000\000\000\000\000\000\003>\000\000\000\000\001\030\000\000\006\202\000\186\000\000\006\206\003B\000\000\000\000\000\000\000\000\000\000\001\154\000\000\000\190\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\008*\000\000\000\000\000\000\000\202\000\000\000\000\000\000\000\000\001R\001\030\001V\006\202\000\000\000\000\006\206\000\000\000\000\000\206\006\234\001^\000\000\000\000\006\238\001f\001j\000\000\006\242\006\246\000\000\006\250\001*\000\000\000\000\008\170\000\000\000\000\000\000\000\000\000\000\006\210\006\214\000\000\000\000\000\000\006\254\007\002\000\000\000\000\000\000\001R\007\006\001V\000\000\000\162\000\000\000\000\000\000\000\000\000\162\006\234\001^\000\000\007\014\006\238\001f\001j\000\000\006\242\006\246\000\000\006\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\018\006\254\007\002\t\166\000\000\007\022\000\000\007\006\000\000\000\000\000\162\000\000\000\000\000\000\007\026\000\000\000\000\000\000\000\000\007\014\001\154\000\000\001\030\000\000\006\202\000\000\000\000\006\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\018\000\000\001*\000\000\000\000\007\022\000\000\000\000\000\000\000\000\000\000\006\210\007\n\000\000\007\026\000\000\000\149\000\000\000\000\000\000\001\154\001R\001\030\001V\t\226\000\000\000\000\t\230\000\000\000\000\000\000\006\234\001^\000\000\000\149\006\238\001f\001j\000\000\006\242\006\246\000\000\006\250\001*\000\000\000\000\000\000\000\000\000\000\000\149\000\000\000\000\t\234\t\246\000\000\000\149\000\149\006\254\007\002\000\000\000\000\000\000\001R\007\006\001V\000\149\000\162\000\000\011*\000\000\000\149\000\000\n\n\001^\000\000\007\014\n\014\001f\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\149\000\000\000\000\000\000\000\000\000\000\007\018\006\254\n\030\000\000\000\000\007\022\000\000\n\"\000\000\000\000\000\162\000\000\000\000\000\000\007\026\000\000\000\000\000\000\000\000\n*\001\154\000\000\001\030\000\000\t\226\000\000\000\000\t\230\000\000\000\000\000\000\000\000\000\149\000\000\000\000\000\000\000\000\000\000\000\000\0112\000\000\n.\000\000\001*\000\000\000\000\n2\000\000\000\000\000\000\000\000\000\149\t\234\n&\000\000\n6\000\000\000\000\000\000\000\000\000\000\001\154\001R\001\030\001V\t\226\000\149\000\149\t\230\000\000\000\000\000\000\n\n\001^\000\000\000\000\n\014\001f\001j\000\000\n\018\n\022\000\000\n\026\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\234\n>\000\000\000\000\000\000\006\254\n\030\000\000\000\000\000\000\001R\n\"\001V\000\000\000\162\000\000\007\173\000\000\000\000\000\000\n\n\001^\000\000\n*\n\014\001f\001j\000\000\n\018\n\022\000\000\n\026\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\000\000\000\000\000\000\000\000\000\000\n.\006\254\n\030\007\173\007\173\n2\000\000\n\"\000\000\007\173\000\162\000\000\000\000\000\000\n6\000\000\000\000\000\000\000\000\n*\001\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\000\000\000\000\000\000\007\173\000:\000\000\000\000\007\173\007\173\000\000\000\000\n.\000\000\000\000\000\000\007\173\n2\000\000\001\153\007\173\007\173\001\153\000\000\000\000\000\000\n6\000\000\000\000\000\000\007\173\000\000\001\154\000\000\000\000\000\000\000\000\001\153\000\000\000\000\007\173\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\001\153\000\000\000\000\000\000\001\153\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\007\173\000\000\000\000\001\153\000\000\000\000\001\153\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\000\000\007\173\007\173\000\000\000\000\007\173\000\000\001\153\000\000\000\000\007\173\007\173\000\000\000\000\005\133\007\173\000\000\005\133\000\000\001\153\000\000\005\133\000\000\005\133\000\000\000\000\000\000\000\000\005\133\005\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\003\166\000\000\001\153\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\007\173\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\005\133\000\000\003\174\000\000\000\000\000\000\001\153\001\153\001\153\000\218\000\000\000\000\007\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\000\000\000\000\007\173\007\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\000\000\000\000\000\000\003u\003u\003u\003u\000\000\003u\000\000\003u\003u\000\000\003u\000\000\003u\000\000\003u\007\173\003u\003u\003u\003u\005\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\238\007\173\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\000\000\007\173\007\173\003\254\000\000\000\000\004N\000\000\000\000\000\000\007\173\007\173\003u\000\000\000\000\007\173\000\000\000\000\003u\000\000\000\000\004\006\000\000\000\000\000\000\002\013\003u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\014\000\000\000\000\000\000\002\013\000\000\004^\004f\000\000\000\000\000\237\000\000\000\000\000\237\000\000\000\000\004.\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\000\000\000\000\000\000\000\004\006\000\000\000\000\003u\000\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0046\004\014\000\000\000\000\000\000\000\237\000\000\000\237\000\237\000\000\000\000\000\000\002\013\000\000\000\000\000\000\000\000\004.\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\004>\000\000\000\000\002\013\000\000\0046\000\000\004\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\237\000\000\002\013\000\213\000\000\000\000\000\213\002\013\002\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004n\004F\002\013\000\000\000\213\000\000\000\000\000\000\000\213\004>\000\000\000\000\000\237\000\000\000\000\000\000\004\030\000\000\000\000\004\014\000\000\000\000\000\000\000\213\000\000\000\213\000\213\000\000\000\237\000\205\000\000\000\000\000\205\000\237\000\237\000\213\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\237\004F\000\237\000\000\000\205\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\205\000\000\000\000\000\000\000\205\000\000\000\205\000\205\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\205\000\000\000\000\004\022\000\000\000\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\213\000\000\000\205\000\000\004\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\205\000\000\000\213\000\209\000\000\000\000\000\209\000\213\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\213\000\213\000\000\000\209\000\000\000\000\000\000\000\209\000\205\000\000\000\000\000\205\000\000\000\000\000\000\004\030\000\000\000\000\000\209\000\000\000\000\000\000\000\209\000\000\000\209\000\209\000\000\000\205\000\225\000\000\000\000\000\225\000\205\000\205\000\209\000\000\000\000\004\022\000\000\000\209\000\000\000\000\000\205\000\205\000\205\000\000\004\006\000\000\000\000\000\000\000\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\004\014\000\000\000\000\000\000\000\225\000\000\000\225\000\225\000\000\000\000\000\000\000\209\000\000\000\000\000\000\000\000\000\225\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\209\000\000\0046\000\000\004\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\225\000\000\000\209\000\217\000\000\000\000\000\217\000\209\000\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\209\000\209\000\000\004\006\000\000\000\000\000\000\000\217\000\225\000\000\000\000\000\225\000\000\000\000\000\000\004\030\000\000\000\000\004\014\000\000\000\000\000\000\000\217\000\000\000\217\000\217\000\000\000\225\000\221\000\000\000\000\000\221\000\225\000\225\000\217\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\225\000\225\000\225\000\000\004\006\000\000\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\217\004\014\000\000\000\000\000\000\000\221\000\000\000\221\000\221\000\000\000\000\000\000\000\217\000\000\000\000\000\000\000\000\000\221\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\217\000\000\000\000\000\217\000\000\0046\000\000\004\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\217\000\229\000\000\000\000\000\229\000\217\000\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\217\000\217\000\217\000\000\004\006\000\000\000\000\000\000\000\229\000\221\000\000\000\000\000\221\000\000\000\000\000\000\004\030\000\000\000\000\004\014\000\000\000\000\000\000\000\229\000\000\000\229\000\229\000\000\000\221\003\254\000\000\000\000\000\245\000\221\000\221\004.\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\221\000\221\000\221\000\000\004\006\000\000\000\000\000\000\000\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0046\004\014\000\000\000\000\000\000\000\245\000\000\000\245\004f\000\000\000\000\000\000\000\229\000\000\000\000\000\000\000\000\004.\000\000\000\000\004\022\000\000\004&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004>\000\000\000\000\000\229\000\000\0046\000\000\004\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\000\000\000\229\003\254\000\000\000\000\000\233\000\229\000\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\229\000\229\000\229\000\000\004\006\000\000\000\000\000\000\000\233\004>\000\000\000\000\000\245\000\000\000\000\000\000\004\030\000\000\000\000\004\014\000\000\000\000\000\000\000\233\000\000\000\233\000\233\000\000\000\245\003\254\000\000\000\000\000\241\000\245\000\245\004.\000\000\000\000\004\022\000\000\004&\000\000\000\000\004n\004F\000\245\000\000\004\006\000\000\000\000\000\000\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0046\004\014\000\000\000\000\000\000\000\241\000\000\000\241\004f\000\000\000\000\000\000\000\233\000\000\000\000\000\000\000\000\004.\003\189\000\000\004\022\003\189\004&\000\000\000\000\003\189\000\000\003\189\000\000\000\000\000\000\000\000\003\189\003\189\000\000\000\000\000\000\000\000\004>\000\000\000\000\000\233\000\000\0046\000\000\004\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\233\000\000\000\000\000\000\0021\000\233\000\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\004F\000\233\000\000\000\000\003\189\000\000\000\000\000\000\004>\000\000\000\000\000\241\000\000\000\000\000\000\004\030\0021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0021\000\000\000\000\000\241\0021\0021\000\000\000\000\000\241\000\241\000\000\000\000\000\000\000\000\0021\000\000\000\000\000\000\000\241\004F\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\005.\000F\000b\000\000\000f\0021\000j\000\134\000\000\000\138\003\189\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\0021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0021\000\000\000\190\0021\0021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0021\0021\000\000\000\000\000\000\0021\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\000\0052\0056\0002\000\214\000F\000b\000\000\000f\000\000\000j\000\134\000\000\000\138\000\000\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\005.\000F\000b\000\186\000f\000\000\000j\000\134\000\000\000\138\000\000\000\146\000\000\000\150\000\190\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\000\005:\000\000\000\000\000\000\000\000\000\000\000\186\000\000\000\000\000\000\000\202\000\000\000\000\000\000\000\000\000\000\000\230\000\190\000\000\000\000\002}\000\000\000\000\000\000\000\206\000\000\000\000\0002\005.\000F\000b\000\000\000f\000\000\000j\000\134\000\000\000\138\000\202\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\000\021\210\0056\000\000\000\186\000\000\0002\000\214\000F\000b\000\162\000f\000\000\000j\000\134\000\190\000\138\000\000\000\146\000\000\000\150\000\000\000\154\000\174\000\178\000\182\000\000\000\000\000\000\000\234\000\000\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\190\000\206\000\000\002-\000\000\0052\0056\000\000\021\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\000\000\000\000\000\012\013\000\230\002u\000\000\000\000\0002\005.\000F\000b\000\206\000f\000\000\000j\000\134\000\000\000\138\000\000\000\146\012\013\000\150\000\000\000\154\000\174\000\178\000\182\000\000\nV\000\000\000\000\000\000\000\000\000\000\000\000\012\013\000\000\005B\000\000\000\186\000\000\012\013\012\013\000\000\000\000\n^\000\000\000\000\nj\000\000\000\190\012\013\000\162\000\000\012\013\000\000\012\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\000\000\000\000\000\000\000\012\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\153\021\210\0056\000\000\000\000\000\000\002%\000\000\nv\000\000\000\000\000\000\0002\006B\006J\000b\000\000\000f\000\153\006N\000\134\000\000\000\138\000\000\000\146\000\169\000\150\012\013\000\154\000\174\000\178\000\182\nz\000\153\012\013\000\000\000\000\000\000\000\000\000\153\000\153\000\000\n\130\011\026\000\186\000\000\012\013\000\000\000\000\000\153\000\000\000\000\011*\000\000\000\153\000\190\000\000\021\222\011\"\000\000\000\000\012\013\012\013\000\000\000\169\000\169\000\000\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\169\000\153\006R\011*\000\000\011:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\026\000\000\000\000\000\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011J\000\165\011\"\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\161\011\026\0112\011*\000\000\011:\000\000\000\173\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\011\"\000\000\000\000\000\000\000\169\000\000\000\165\000\165\000\000\011\026\000\161\0112\000\000\000\153\000\153\000\000\000\165\000\000\000\000\011*\000\000\011:\000\000\000\169\011\"\000\000\000\000\000\000\000\000\000\000\000\173\000\173\011\018\000\000\000\000\000\000\000\000\000\000\000\169\000\169\011B\000\000\011J\011*\000\000\011:\000\000\000\000\000\161\000\000\011\026\000\000\000\000\000\000\000\000\0112\011\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\"\011J\000\161\000\000\000\000\000\000\000\189\011j\011\018\011\026\000\000\000\000\000\000\000\000\000\000\000\165\011B\000\161\000\161\011*\000\000\011:\0112\000\000\011\"\000\000\011\026\000\000\000\000\000\000\000\177\000\177\000\000\000\000\000\165\000\000\000\000\000\000\000\000\011R\011B\011\"\011J\011*\000\000\011:\0112\000\185\011j\000\165\000\165\000\000\000\000\000\000\000\000\000\000\000\000\011B\000\173\000\000\011*\000\000\011:\000\000\000\000\000\000\011J\000\000\000\000\000\000\000\000\000\000\000\000\000\173\000\173\000\000\000\000\000\000\000\000\000\000\011R\000\000\000\000\011J\000\000\000\000\000\000\0112\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\000\000\000\000\000\011R\000\000\000\000\000\000\000\000\000\000\000\000\0112\000\000\000\000\011r\011Z\000\000\000\000\000\000\000\000\000\000\011R\000\000\000\177\000\000\000\000\000\000\000\000\0112\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\177\011Z\000\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\185\011Z")) let lhs = - (16, "\000\012\000\011\000\n\000\t\000\008\000\007\000\006\000\005\000\004\000\003\000\002\000\001\000\000\001\006\001\006\001\006\001\005\001\005\001\005\001\005\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\001\000\001\000\000\255\000\254\000\254\000\254\000\253\000\253\000\253\000\252\000\252\000\252\000\251\000\251\000\251\000\250\000\249\000\248\000\247\000\247\000\246\000\246\000\245\000\245\000\244\000\244\000\243\000\243\000\242\000\241\000\241\000\240\000\240\000\239\000\239\000\239\000\238\000\238\000\237\000\236\000\235\000\234\000\233\000\232\000\231\000\230\000\229\000\228\000\227\000\226\000\225\000\225\000\224\000\224\000\223\000\223\000\222\000\222\000\221\000\221\000\221\000\220\000\220\000\220\000\220\000\220\000\219\000\219\000\219\000\219\000\219\000\218\000\217\000\217\000\217\000\217\000\216\000\216\000\215\000\215\000\214\000\214\000\213\000\213\000\213\000\212\000\212\000\212\000\211\000\211\000\211\000\211\000\210\000\210\000\210\000\210\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\209\000\208\000\207\000\207\000\206\000\206\000\206\000\205\000\205\000\204\000\204\000\204\000\203\000\203\000\202\000\202\000\202\000\201\000\200\000\199\000\199\000\198\000\198\000\197\000\197\000\196\000\196\000\195\000\195\000\194\000\193\000\192\000\192\000\191\000\191\000\190\000\189\000\189\000\189\000\189\000\188\000\187\000\186\000\186\000\185\000\184\000\184\000\183\000\183\000\183\000\183\000\183\000\182\000\182\000\182\000\182\000\181\000\181\000\181\000\181\000\180\000\180\000\180\000\180\000\179\000\178\000\178\000\177\000\177\000\177\000\176\000\175\000\175\000\175\000\175\000\174\000\173\000\173\000\173\000\173\000\172\000\172\000\172\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\171\000\170\000\170\000\169\000\169\000\168\000\168\000\167\000\167\000\166\000\166\000\166\000\166\000\165\000\165\000\165\000\165\000\164\000\164\000\164\000\164\000\164\000\163\000\162\000\162\000\162\000\161\000\160\000\160\000\159\000\159\000\158\000\158\000\157\000\157\000\156\000\156\000\155\000\155\000\154\000\154\000\154\000\154\000\154\000\154\000\154\000\153\000\152\000\151\000\151\000\150\000\150\000\149\000\149\000\148\000\148\000\147\000\147\000\146\000\146\000\145\000\145\000\144\000\144\000\143\000\143\000\142\000\142\000\141\000\141\000\140\000\140\000\139\000\139\000\138\000\138\000\137\000\137\000\136\000\136\000\135\000\135\000\134\000\134\000\133\000\133\000\132\000\132\000\131\000\131\000\130\000\130\000\129\000\129\000\128\000\128\000\127\000\127\000~\000~\000}\000}\000|\000|\000{\000{\000z\000z\000y\000y\000x\000x\000w\000w\000v\000u\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000t\000s\000r\000q\000p\000o\000n\000m\000l\000k\000j\000j\000j\000i\000i\000i\000h\000h\000h\000h\000g\000f\000e\000d\000c\000b\000a\000a\000a\000`\000`\000`\000_\000_\000^\000^\000^\000]\000]\000\\\000[\000[\000[\000Z\000Y\000Y\000X\000X\000W\000W\000V\000V\000U\000U\000T\000T\000S\000S\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000R\000Q\000Q\000P\000P\000O\000O\000N\000N\000N\000N\000N\000M\000M\000L\000L\000L\000L\000K\000J\000I\000I\000I\000H\000H\000H\000G\000G\000G\000G\000G\000G\000F\000F\000F\000F\000F\000E\000E\000E\000E\000E\000E\000E\000D\000D\000D\000D\000D\000D\000D\000C\000C\000C\000C\000C\000C\000C\000B\000B\000B\000B\000B\000B\000B\000A\000A\000A\000A\000A\000A\000A\000A\000A\000A\000A\000A\000A\000@\000@\000@\000@\000@\000@\000@\000@\000@\000@\000@\000@\000@\000?\000?\000?\000?\000?\000?\000?\000?\000?\000?\000?\000?\000?\000>\000>\000>\000>\000>\000>\000>\000>\000>\000>\000>\000>\000>\000=\000=\000=\000=\000=\000<\000;\000;\000;\000;\000;\000;\000:\0009\0008\0007\0006\0005\0005\0005\0005\0005\0005\0005\0004\0004\0004\0004\0003\0002\0002\0001\0001\0000\0000\000/\000/\000.\000.\000-\000-\000,\000,\000+\000+\000*\000*\000)\000)\000(\000(\000'\000'\000&\000&\000%\000%\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000#\000#\000#\000\"\000\"\000\"\000\"\000!\000!\000!\000!\000!\000 \000\031\000\031\000\031\000\030\000\030\000\029\000\028\000\027\000\027\000\027\000\027\000\026\000\026\000\026\000\025\000\025\000\024\000\024\000\024\000\023\000\023\000\023\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\021\000\021\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\016\000\016\000\016\000\016\000\016\000\015\000\015\000\014\000\013\000\013\000\013\000\013\000\013") + (16, "\000\012\000\011\000\n\000\t\000\008\000\007\000\006\000\005\000\004\000\003\000\002\000\001\000\000\001\t\001\t\001\t\001\008\001\008\001\008\001\008\001\007\001\007\001\007\001\007\001\007\001\007\001\007\001\007\001\007\001\007\001\007\001\007\001\007\001\007\001\006\001\006\001\006\001\006\001\006\001\006\001\006\001\006\001\006\001\006\001\006\001\006\001\006\001\006\001\005\001\005\001\005\001\005\001\005\001\005\001\005\001\005\001\005\001\005\001\005\001\005\001\005\001\005\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\004\001\003\001\003\001\003\001\003\001\002\001\001\001\001\001\001\001\000\001\000\001\000\000\255\000\255\000\255\000\254\000\254\000\254\000\253\000\252\000\251\000\250\000\250\000\249\000\249\000\248\000\248\000\247\000\247\000\246\000\246\000\245\000\244\000\244\000\243\000\243\000\242\000\242\000\242\000\241\000\241\000\240\000\239\000\238\000\237\000\236\000\235\000\234\000\233\000\232\000\231\000\230\000\229\000\228\000\227\000\227\000\226\000\226\000\225\000\225\000\224\000\224\000\223\000\223\000\223\000\222\000\222\000\222\000\222\000\222\000\221\000\221\000\221\000\221\000\221\000\220\000\219\000\219\000\219\000\219\000\218\000\218\000\217\000\217\000\216\000\216\000\215\000\215\000\215\000\214\000\214\000\214\000\213\000\213\000\213\000\213\000\212\000\212\000\212\000\212\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\211\000\210\000\209\000\209\000\208\000\208\000\208\000\207\000\207\000\206\000\206\000\206\000\205\000\205\000\204\000\204\000\204\000\203\000\202\000\201\000\201\000\200\000\200\000\199\000\199\000\198\000\198\000\197\000\197\000\196\000\195\000\194\000\194\000\193\000\193\000\192\000\191\000\191\000\191\000\191\000\190\000\189\000\188\000\188\000\187\000\186\000\186\000\185\000\185\000\185\000\185\000\185\000\184\000\184\000\184\000\184\000\183\000\183\000\183\000\183\000\182\000\182\000\182\000\182\000\181\000\180\000\180\000\179\000\179\000\179\000\178\000\177\000\177\000\177\000\177\000\176\000\175\000\175\000\175\000\175\000\174\000\174\000\174\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\172\000\172\000\171\000\171\000\170\000\170\000\169\000\169\000\168\000\168\000\168\000\168\000\167\000\167\000\167\000\167\000\166\000\166\000\166\000\166\000\166\000\165\000\164\000\164\000\164\000\163\000\162\000\162\000\161\000\161\000\160\000\160\000\159\000\159\000\158\000\158\000\157\000\157\000\156\000\156\000\156\000\156\000\156\000\156\000\156\000\155\000\154\000\153\000\153\000\152\000\152\000\151\000\151\000\150\000\150\000\149\000\149\000\148\000\148\000\147\000\147\000\146\000\146\000\145\000\145\000\144\000\144\000\143\000\143\000\142\000\142\000\141\000\141\000\140\000\140\000\139\000\139\000\138\000\138\000\137\000\137\000\136\000\136\000\135\000\135\000\134\000\134\000\133\000\133\000\132\000\132\000\131\000\131\000\130\000\130\000\129\000\129\000\128\000\128\000\127\000\127\000~\000~\000}\000}\000|\000|\000{\000{\000z\000z\000y\000y\000x\000w\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000v\000u\000t\000s\000r\000q\000p\000o\000n\000m\000l\000l\000l\000k\000k\000k\000j\000j\000j\000j\000i\000h\000g\000f\000e\000d\000c\000c\000c\000b\000b\000b\000a\000a\000`\000`\000`\000_\000_\000^\000]\000]\000]\000\\\000[\000[\000Z\000Z\000Y\000Y\000X\000X\000W\000W\000V\000V\000U\000U\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000T\000S\000S\000R\000R\000Q\000Q\000P\000P\000P\000P\000P\000O\000O\000N\000N\000N\000N\000M\000L\000K\000K\000K\000J\000J\000J\000I\000I\000I\000I\000I\000I\000H\000H\000H\000H\000H\000G\000G\000G\000G\000G\000G\000G\000F\000F\000F\000F\000F\000F\000F\000E\000E\000E\000E\000E\000E\000E\000D\000D\000D\000D\000D\000D\000D\000C\000C\000C\000C\000C\000C\000C\000C\000C\000C\000C\000C\000C\000B\000B\000B\000B\000B\000B\000B\000B\000B\000B\000B\000B\000B\000A\000A\000A\000A\000A\000A\000A\000A\000A\000A\000A\000A\000A\000@\000@\000@\000@\000@\000@\000@\000@\000@\000@\000@\000@\000@\000?\000?\000?\000?\000?\000>\000=\000=\000=\000=\000=\000=\000<\000;\000:\0009\0008\0008\0007\0006\0006\0006\0006\0006\0006\0006\0005\0005\0005\0005\0005\0005\0004\0003\0003\0002\0002\0001\0001\0000\0000\000/\000/\000.\000.\000-\000-\000,\000,\000+\000+\000*\000*\000)\000)\000(\000(\000'\000'\000&\000&\000%\000%\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000$\000#\000#\000#\000\"\000\"\000\"\000\"\000!\000!\000!\000!\000!\000 \000\031\000\031\000\031\000\030\000\030\000\029\000\028\000\027\000\027\000\027\000\027\000\026\000\026\000\026\000\025\000\025\000\024\000\024\000\024\000\023\000\023\000\023\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\021\000\021\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\016\000\016\000\016\000\016\000\016\000\015\000\015\000\014\000\013\000\013\000\013\000\013\000\013") let goto = - ((16, "\001\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\000\000\223\012\200\000\000\000\167\000_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003`\000\000\006\204\000\167\000_\000\000\000\000\000\000\000\000\000\000\017l\000$\008t\000\000\000\000\000\000\005\014\000\000\001\138\000\233\023\246\000\000\000\000\000\027\000\000\nH\000\000\007\178\019V\004\254\027\196\004\254\017\030)N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013^\027\196\000\000\000\000\013\128\000\000\014p\000\000\005\000\000\000\000\000\000\000\000\000\000\246\000\000$\198\000\000\000\000\008T\000\000\t\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000v\000\000\031.\000\000\031\194\000\000\"6\000\000%N\000\000'\192\000\000*X\000\000,f\000\000,\210\000\0002R\000\000 R\000\000\007\012\000\000\000\000\000\000\000\000\000\0008B\000\0009\246\000\000:\026\000\000\016\018\000\000\000\000\017r\000\000\000\000\000\211\000\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0009\000\164\000\000\000\136\000\000\000\000\002\236\000\00050\000\000\000\000\000\000\000\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\140\000\000\000\000\000\000\000\000\000\000\000\000\012\234)N\000\000\021\156\000\000\026d\026\154\000\000\000\000\000\000\0010\000\000&\002\000\000\000\0005\132\000\000\000\000\000\000\002\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\224\000\000#\146\000\000\000\000\000\000\000\000\000\012\000\000\000\0005\166\000\000\000\000\000\000 \146\002\182\000\000\000\000\000\000\000\000\000\000\000\000\n\002\000\000\018\232\000\000\022\174\000\000\023\216\000\000\024\238\000\000%\188\000\000%\246\000\000(H\000\000+\184\000\000-\028\000\000)\170\000\000\000\n\000\000/t\000\0003\012\000\0004X\000\000\000\000\000\000\000\000\000\000\000D6\028\000\000\002*\000\000\000\000\000-\016\238\000\000\002\158\000\000\000\000\000\000\005\180\000\000\000\000\000\000)f\000\000\000\000\000\000\000\000\000\000*\006\000\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\000\000\000\000\150\000\000\000\000\000\000\0026\000\000\000\000\011.\000\167\000\000\000\000\001\005\013F\000\000\000\000\000\000\000\000\000\000\004H\000\000\011r\000\000%n\000\000\000\000\004\178\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\000\000\000\000\000\245\000\000\000\000\000\000\000\000\003B\015\204\000\000\002\138\000\000\000\000\001|\002\226\000\000\000\000\000\000\000\000\t\026\000\000\000\000\000\000\000\000\000\000\000\000\000'\0218\000\000\022\170\000\000\000\000\000\000\001\006\000\000\013\244\001~\000\000\016$\000\000\000\000\000\000\000\232\001\168\000\000\000\000\000\000\011>\000\000\000\000\001\206\000\000\000\242\000\000\000\000\000\000\000\000\001@\002\182\000\000\002D\000\000\000\000\000\000\000\000\000\000\000\00066\000\000\001(\000\0006\184\000\000\000\000\0024\000\000\008N\000\000\005\158\004V*\030\000\000\000\000\000\000\006\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015f*\030\000\000\015\240\000\000\021\204\019\150\000\000\000\000\000\000\004\224\000\000&X\000\000\000\0006\214\000\000\000\000\000\000\004\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\174\000\000&\196\000\000\000\000\000\000\004 \000\000\000\000\000\000\000\000\000\000\000\000\002\192\000\000\007j\000\000\014\030\000\000\0178\000\000\023\250\000\000\030D\000\000#\240\000\000'\172\000\000(\028\000\000)\238\000\000/\002\000\000\012\242\000\000.x\000\0005\008\000\0005&\000\000*\190\000\000\000\000\000\0007|\000\000\000\000\000\000\000\011\000\0007\184\000\000\000\000\000\0007\210\000\000\000\000\0000\000\000\026\176\000!\000\196\000\000\002\156\000\000\014\254\002l\tX\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008.\000\000*l\000x\005T\000\000\000\000\000\000/\008\000\000/\168\000\000/\190\000\000+\136,\012\000z\001\003\005X\000\000\000\000\000\000\000\183\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008j\000\000\000\000\000\000\000\000\000\000&\240\000\000,\134\000\000\000\000\000\000\000\000\000\000\000\000\015|\000\000\003\136\000\000\000\000\000\000\000\000\t\252\001\250\000\000\016\162\000\000\000\000\000\000\000W\000\000\000\000 \230\006\152\000\000\003`/\136\000\000\000\000,b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013|,b\000\000\018j\000\000\019\158\002t,\212\000\000\n\\\000\000\000\000\000\000\006\000\000\000'\168\000\000\000\0008n\000\000\000\000\000\000\006*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008\142\000\0009^\000\000\000\000\000\000\022\028\000\000\000\00000\000\000\000\000\000\000\000\000\0062\000\000\000\000\000\000\005\226\000\000\000\000\007\174\000\000\002v\000\000\000\000\000\000\000R\000\000\007\216\000\000\020\134\000\000\027\"\000\0001\018\000\0003P\000\0004\244\000\0006(\000\0007\140\000\0008\000\000\0008\226\000\0009\\\000\000:.\000\000\000\000\000\000\000\000\000\000\000\228\000\000\013\012\000\000\027\182\002\222\000\000\028\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\000\000\000\000\000\000\000\000\000\000\003\158\000\000\000\000\022\138\000\000\000\000\000\0000\166\000\000\000\000\008\130\000\000\000\000\000\000\025T\000\000\000\000\000\000\000\0000\188\000\000\000\000\000\000\000\000\002\n\006\002\000\0001>\000\000\000\000\000\000\000\000\027D\003\210\000\000\028\140\000\000\000\000\006j\000\0001\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\252\000\000\000\000\028\030\000\000\000\000\000\0001\198\000\000\000\000\005\180\000\000\000\000\014\192\000\000\029 \000\000\000\000'\254\000\000\000\000\000\000\015<\000\000\000\000\028\234\000\000\000\000\000\000\000\0002\028\000\000\000\000\000\000\000\000\003<\008d\000\00022\000\000\000\000\000\000\000\000\000\000\000\000\016\200\000\000\000\000\006D\000\000\017F\000\000\015<\000\000\000\000\004>.~\000\000\005&\000\000\000\000\000\000\000\000\004 \000\000-f\000\000\029\212\001\182\030h\000\000\005\002\000\000\017\236\000\000\018\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\136\031\140\005\014 \000\000\000\000\000\000\006>\000\000\019\016\000\000\005\218\000\000\000\000\015z\001\222!D\000\000\006\188\000\000\019\220!\234\000\000\000\000\020Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\002\t\214\000\000\007\200\000\000\000\000\000\000\000\000\007r\000\000\021&\000\000\000\000\000\000\030\2169~\000\000\000\000\000\000$\160\000\000\000\000\000\000\000\000\n*\005`\000\000\000\0002\146\000\000\000\000\000\000\000\000\005h\000\000\000\000 F\000\000\000\000\000\0002\222\000\000\000\000\002.\000\000\000\0003v\000\000\000\000\004\018\005z\000\000\000\0003z\000\000\000\000\008@%P\000\000\006\166\000\000\000\0003\214\000\000\000\000\000\000\000\000\000\000\000\000\007\202\000\000\000\000\"\254\000\000\000\000\000\0003\236\000\000\000\000\000\000\000\000\000\000(\150\000\000\000\000\000\000\000-\000\000\000\000\000\0004\002\000\000\000\000\004&\008p\000\000\000\0004v\000\000\000\000\008Z\000\000\000\000\000\000\000\000\004 \000-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\148\000\000\021d\000\000\000\000\000\0009\130\000\000\n\162\000\000\000\000\000\000\006p\000\000\000\000\003J\021\226\000\000\023.\000\000\000\000\000\000\003\148\000\000\"\170\007\004-V\000\0000\004\000\000\000\000\000\000\007L\000\000.*\007x.\192\000\000.\248\000\000\000\000\000\000\007\164\000\0000\156\007\232\000\000\000\000\001f\006j\007\252\014\026\000\000\015\164\000\000\000\000\000\000\007\254\000\0005\252\008\024\000\000\000\000\000\000\002l\000\000\000\000\000\000\000\000\000\000\003.\000\000\000\000\003^\000\000\000\022\000\000\000\000\000\000\003\156\000\000\000\000\000\000\000\000\000\000\000C\000\000\008\184\003\192\001B\000\000\000\000\004\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\246\000?\000\000\000\000\000\003\000\000\000\000\000\000\004\198\000\000\000\000\006~\008H\000\000\000\000\000\000\000\000\017p\019D\004\234\000\000\022\016\000\000\000\000\000\000\000\000\000\000\000\000\003.\000\000\000\000\004\180\000\000\000\000\003\170\000\000\000\000\003|\000\000\000\000\003\222\000\000\t\012\004d\002z\000\000\000\000\008\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\252\022\140\000\000\000\000\000\000\000\000\023\024\000\000\000\000\011:\000\000\000\000\015\026\000\000\000\000\000\000\023@\000\000\000\000\0009\023`\005\136\000\000\024L\000\000\000\000\000\000\000\000\000\000\000\000\005\154\000\000\t\012\007\250\000\142\000\000\000\000\000\000\000\000\002`\000\000\000\000\000\000\000\000\000\000\000\000\008\008\000\000\000\000\004\024\000\000\t,\006X\003\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\200\000\000\000\000\019(\024V\000\000\000\000\000\000\000\000\002T\000\000\003\156\000\000\0208\000\000\000\000\000\000\000\000\000\000\000\000\000\011\020\164\000\000\000\000\021\128\000\000\000\000\000\000\000\000\000B\000\000\021\254\000\000\000\000\000\000\000\000\004\190\000\000\000\000\000\000\000\155\000\000\000\000\000Y\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\190\007\228\000\000\000\000\000\000\001\006\000\000\000\000\026\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000-\000\000\000\000\000\000\000\000\000\000\000\144\n\156\000\167\013\028\019\030\005\210\000\000\000\000\0030\006\188\008\148\t\"\000\000\000\000\000\000\000\000\000\000\000\000\004\170\023\172\000\000\"(\008\008\000\000\000\000\t<\000\000\024x\000\000\025n\000\000\000\000\005\024\024\182\000\000\"\216\000\000\007.#\188\000\000\000\000\000\000\018\020\0030\000\000\008r\000\000\000\000\000\000\008\230\000\000\011\000\000\000\008.\006\170\000\000\000\000\000\000\000\000\004H\000\000\004\178\000\000\008\180\000\000\000\000\020\130\000\000\000\000\000\000\000\000\011 \000\000\000\000\0030\t\246\000\000\026\\\000\000\015<\006`\000\000\000\000\000\000\000\000\000\000\004\174\000\000\000\000\000\000\000\000\000\0004\132\008\140\000\000\003\164\000\000\000\000\000\000\000\000\000\000\001\216\000\000\011\238\t\200\012l\000\000\003\180\013v\000\000\t\228\000\000\0048\000\000\005\128\000\000\006\004\000\000\000\000\000\000\000\000\000\000\008\232\000\000\007L\000\000\n\002\000\000\007\208\000\000\015<\006\206\000\000\006(\000\000\006\240\006\004\000\000\006\156\000\000\008\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\250\000\000\t`\000\000\000\000\000\000\000\000\000\000\0064\000\000\000\000\006z\008\148\007\224\000\000\008\018\000\000\000\000\003\222\n\020\000\000\007j\000\000\000\000\000\000\000\000\008\188\000\000\000\000\000\000\000\000\000\000\000\000\008\190\008\192\t\146\t.\008\230\t.\000\000\000\000\008\224\t\164\t^\t\030\t^\000\000\000\000\006L\000\000\000\000\000\000\000\000\n0\000\000\000\000"), (16, "\001\200\001\223\000>\000h\002u\004g\000\017\001<\002!\002\"\000\n\004|\000\005\004\206\000>\002E\001g\000*\002m\003n\003V\000\210\004e\000\211\001i\000>\004h\004t\004}\004t\004\207\004\210\004t\001?\004\225\000\t\000\008\000\t\003\007\005\026\005\027\004\127\000\016\004P\003!\000\166\001\202\000j\000*\004d\001\203\004\226\000k\002G\004\229\004t\000l\002\143\004}\004t\002\147\004\224\005\031\005 \0008\000j\004e\0009\000\212\002F\004h\004t\000\213\004\013\004\206\000h\001\200\001\223\000*\000i\000u\001+\005$\0055\005\006\004u\0056\004u\001\200\001\223\004u\004\207\004\210\004t\005b\003\157\003b\001\228\000\226\001 \005c\000j\000>\0008\005:\002\148\005d\002F\003 \002\149\001h\002!\002\"\004u\005\t\001-\004\214\004u\001h\000j\002[\000*\001\202\001\133\000k\004\019\001\203\000F\000l\004u\002\143\004\215\003!\002\147\001\202\002\\\001%\000\247\001\203\001@\001\135\0053\001\156\000\163\000\176\001\216\000>\000\210\000F\000\233\002a\004u\000u\003C\002b\000\163\001D\003(\000+\001\217\003\159\003|\000v\0053\001\200\001\223\000\163\000\164\003)\003h\001'\000\175\003j\001\228\002[\002v\005f\005*\002\148\004W\000\227\001\158\002\149\000*\002T\004\031\000w\000*\001x\002f\000>\000j\002\247\003W\000\212\003v\003\247\005g\000\213\004\128\003<\004\239\002\162\000\248\003\141\004k\003N\001\232\002[\000>\001\202\002\\\000*\002m\001\203\005\001\002\163\000\173\000\177\001A\000>\001\216\005\012\002\\\000\226\001E\002a\001\233\002$\001\023\002b\002H\001\234\001\216\000v\001\217\001\235\004v\002a\004B\004\216\001\236\002b\000\163\001D\003(\005i\001\217\003j\000\252\001t\000j\001\200\001\223\003p\005j\005\132\000*\000w\002\187\005\133\004\014\005\019\000\255\005\160\002f\000>\002K\002L\002N\005d\005\161\003 \001\136\003\143\002\162\002\228\002f\002\226\004l\000\017\0037\005\135\001\232\002\190\004\016\002\195\001\152\003<\002\163\001\135\000>\005\137\000n\003N\001\232\003!\000\186\001\202\002\\\002\198\001\146\001\203\001\233\004\219\000y\000\227\005\179\001\234\001\216\002\229\000*\001\235\000j\002a\001\233\002\193\001\236\002b\000}\001\234\003\020\000\215\001\217\001\235\001@\001\200\001\223\000>\001\236\002\143\001\162\005+\002\147\003\153\001\154\002d\004\225\001\159\003\007\000>\0009\000\017\000*\002m\003n\003V\002!\002\"\004\218\000\163\001D\003(\002f\004\226\000\251\005\180\004\229\004t\002\195\004\167\000\163\000\176\003)\004\215\005.\001\139\000F\001\200\001\201\003!\001\232\001\202\002\196\000j\000\252\001\203\004\168\002\148\001%\000\253\001\153\002\149\002\143\000\254\000*\002\147\002\\\004C\000\255\000h\001\233\000*\004o\000q\003<\001\234\001\216\003x\003A\001\235\003N\002a\0009\000>\001\236\002b\000\163\001D\003(\005\182\001\217\000j\001&\001\202\001B\004u\004\254\001\203\005j\005\132\002H\003}\001\228\005\184\001 \004U\002[\002o\000*\004\027\002\148\000\163\000\176\000j\002\149\001\161\000>\001+\000k\001\163\002f\005E\000l\000>\0037\005\186\000>\002\143\000F\001n\002\169\003<\000F\003\008\004\151\005\188\002J\003N\001\232\002\194\002\\\000>\004V\002#\002!\002\"\000u\004z\000\163\000\164\001\216\001,\004\216\003O\002\162\002a\000E\000\250\001\233\002b\000\163\001D\003(\001\234\001\217\004\160\003\127\001\235\002\163\001\200\001\223\000j\001\236\003)\000F\002\148\003\203\003j\004\167\002\149\001I\000\224\004\161\000>\004\164\004t\004\018\005d\005\166\003V\004\\\002\187\001\216\003\029\002f\004\168\002\193\005\001\003W\000\173\003v\004a\000*\003\030\005\002\003<\001\217\002\162\004\029\003\141\002\233\003N\001\232\003!\004\163\001\202\002\190\005\154\000F\001\203\005\155\002\163\001q\000\248\000\163\000\164\001 \004\171\000v\005\176\000>\004\161\001\233\004\164\004t\001\200\001\223\001\234\002\165\004%\000>\001\235\004\228\004u\000\180\004W\001\236\000\171\002\193\000>\001\200\001\223\000w\005d\005\166\003V\004'\000\163\000\164\004\226\003\209\002i\004\229\004t\000\163\000\176\001u\000\163\001D\005I\003\253\005\159\002\162\000\172\001\233\000\173\004(\004q\000\149\003!\001F\001\202\000\163\000\164\002\236\001\203\002\163\000*\001\238\002!\002\"\002\195\004u\004'\000j\005\171\001\202\002\245\004\157\000y\001\203\004\173\005\228\000\150\002\\\002\196\004\152\000\151\000\173\001%\000*\000>\000F\000{\001\216\000\178\001p\001w\001s\002a\003e\004u\004\155\002b\000\163\001D\003(\005\172\001\217\004\154\0053\001(\004|\000\173\000h\000h\005j\005\132\000q\000i\000*\002d\004n\001\231\002!\002\"\005\022\001\228\000>\004}\004t\005\145\005\146\004\176\003g\003p\000>\000D\002f\000C\002\252\003\130\003W\000*\005\174\000*\004\232\004\142\004t\003<\002\\\000\163\000\176\003A\005\237\003N\001\232\000*\000j\000j\001\216\000\163\000\176\000k\000k\002a\000E\000l\000l\002b\000\163\001D\003(\005\172\001\217\001\216\001\233\001b\004\016\001\200\001\223\001\234\005j\005\132\005\150\001\235\005M\002d\004u\001\217\001\236\000u\000u\000>\001\200\002\014\004l\005d\005\166\003V\000F\000*\001\230\000*\002f\000h\004u\000*\003W\000i\005\174\000*\001\030\001 \0036\003<\003e\004\209\005\024\003A\000*\003N\001\232\003!\003\030\001\202\004\200\004t\002\143\001\203\001^\002\147\000\163\000\164\004\207\004\210\004t\001\232\000j\005\173\001\202\005[\001\233\0053\001\203\001\200\001\223\001\234\002\246\000j\003f\001\235\000>\001\205\000k\001\214\001\236\001\233\000l\000>\001\200\001\201\001\234\005d\005\166\003V\001\235\000F\003\138\000\163\000\164\001\236\002[\000v\000v\002u\002\148\000\163\001D\003s\002\149\004\152\000u\000\173\003\132\004u\003\\\000*\000*\003!\001F\001\202\001\"\003\130\004u\001\203\003\030\000w\000w\005\239\004\131\001m\003\140\005\004\000j\005\175\001\202\005\240\000*\003\138\001\203\0025\000*\002D\002\\\003,\006\000\000F\001(\002\143\000\173\000F\002\147\000\149\001\216\006\001\001p\002u\001s\002a\000F\004\234\004|\002b\000\163\001D\003(\005\172\001\217\001\216\000*\005\014\000>\003\139\000y\000\188\005j\005\132\000\150\004}\004t\002d\000\151\001\217\005@\005E\003\143\002\187\000{\000>\000@\001~\000C\002[\000v\003\185\005\143\002\148\002f\003\193\000*\002\149\003W\002\162\005\174\005\205\002\189\000h\003\210\003<\002\\\000i\002\190\003A\005\190\003N\001\232\002\163\000w\000E\001\216\002!\002\"\000\163\000\164\002a\005r\002\151\000F\002b\000\163\001D\003(\005\172\001\217\001\216\001\233\005\194\004u\001\200\001\223\001\234\005j\005\132\002\193\001\235\003\146\002d\002\160\001\217\001\236\000j\002\185\000>\001\200\001\201\000k\005d\005\166\003V\000l\004\030\005\213\005\248\002f\0010\003\135\003\168\003W\005\218\005\174\000\210\005\001\000\211\000\173\003<\003\021\003\030\002\187\003A\000F\003N\001\232\003!\000u\001\202\003\162\002\195\002\143\001\203\000\210\002\147\0016\003\025\002\162\002\223\002\240\002\226\000j\005\183\001\202\002\196\001\233\002\190\001\203\001\200\001\223\001\234\002\163\002\143\000F\001\235\002\147\000\163\001D\000j\001\236\001\222\000\212\000>\003\164\005\219\000\213\005d\005\166\003V\005s\004/\003\"\002\229\000\163\001D\002[\005H\000j\002\193\002\148\000\212\005`\005\212\002\149\000\213\005Q\001F\0041\003&\000*\005\224\000\226\003!\004\137\001\202\003\030\000j\001m\001\203\004\225\002\148\003\219\005v\004\029\002\149\005w\0042\000\173\005\187\000v\000\226\001\200\001\223\004\215\000h\005\223\004\226\002\\\000s\004\229\004t\002\195\001p\0041\001s\000>\0049\001\216\003\162\002m\003n\003V\002a\000w\004|\002\196\002b\000\163\001D\003(\005\172\001\217\001\216\004;\000>\000@\000A\000C\004<\005j\005\132\004}\004t\002u\002d\003!\001\217\001\202\000j\000\147\002\187\001\203\003\163\000k\005E\004;\000*\000l\002u\0050\005\233\002f\000*\000\227\000E\003W\002\162\005\174\004u\002\192\000y\003\007\003<\002\\\004?\002\190\003A\004\003\003N\001\232\002\163\000u\000\227\001\216\000{\004H\004K\002\162\002a\000F\004\003\0041\002b\000\163\001D\003(\005\172\001\217\004N\001\233\004u\002\163\004J\004J\001\234\005j\005\132\002\193\001\235\004\170\002d\004\005\004\221\001\236\001\233\0041\005x\000>\000@\001z\000C\000j\0051\004r\004\004\005E\004\168\002f\001\240\005T\005h\003W\000\232\005\174\001\200\001\223\002\\\003\229\003<\003\030\005\205\005\205\003A\005\152\003N\001\232\001\216\000E\000>\005\225\002\195\002a\002m\003n\003V\002b\000\163\001D\003(\004s\001\217\004\022\003|\000v\002\196\001\233\000F\004\174\004\222\003)\001\234\002\195\000F\002d\001\235\000\163\001D\004\237\003!\001\236\001\202\000F\004\235\005z\001\203\002\200\003\008\000w\001F\005\181\002f\000h\005\205\0051\003W\000s\003v\001\200\001\223\001m\005\235\003<\005G\004\175\004\223\003A\0051\003N\001\232\005\163\005y\000>\004\135\000x\003P\002m\003n\003V\004\236\000\210\003\254\000\211\005\134\005\163\001p\005\244\001s\005\241\001\233\003\013\000>\003T\003\030\001\234\000y\000j\005l\001\235\005\163\000\160\000k\003!\001\236\001\202\000l\005\242\003\017\001\203\000{\005\251\005\245\005\177\0051\000>\000\210\005\227\000\233\005\246\000\163\001D\002t\005\249\005\238\000j\002\143\005\169\000\212\002\147\000u\002\\\000\213\001F\004\168\005F\005\206\005\208\005\243\005y\005\252\001\216\005\185\005\253\001m\003\184\002a\005\250\006\005\000\000\002b\000\163\001D\003(\000\000\001\217\003z\003|\000\226\005\237\000j\001\200\001\223\000\212\003)\000\000\000\000\000\213\002d\001p\000j\001s\000>\000\000\002\148\000>\005>\000\000\002\149\002m\003n\003V\000\000\005\237\000\000\002f\000\000\000\000\005\210\003W\000\238\003v\000\000\000\226\002\\\000\000\003<\000\000\000\000\000\000\003A\000\000\003N\001\232\001\216\003!\000\000\001\202\000\000\002a\000\000\001\203\000v\002b\000\163\001D\003(\000\000\001\217\003\161\003|\000\000\000>\001\233\001\200\001\223\000\000\003)\001\234\000\000\004\160\002d\001\235\000\163\001D\000\000\000w\001\236\000>\000\000\000\227\000\000\002m\003n\003V\000>\002\249\004\161\002f\004\164\004t\005\238\003W\000>\003v\000\000\000\163\001D\000\000\003<\005\238\004\160\000x\003A\000\000\003N\001\232\000\000\003!\003\190\001\202\002\162\000\000\000\000\001\203\000\227\005{\000\000\004\161\000>\004\164\004t\003\005\000y\003\019\002\163\001\233\0017\000z\000\000\000\000\001\234\000\000\000\000\000\000\001\235\002\\\000{\001Y\000\000\001\236\000\241\000\000\000\000\000\000\003\202\001\216\003\208\004u\000\252\000\000\002a\001S\000\163\005?\002b\000\163\001D\003(\000\000\001\217\004\026\003|\001\001\000\251\005K\005B\001\200\001\223\003)\000\000\000\000\001Y\002d\000\000\000\000\000\000\000\000\001\150\004u\000\000\000>\000\000\000\000\000\252\005d\001S\003 \000\000\000\253\002f\000\000\000\000\000\254\003W\002\164\003v\000\000\000\255\002\\\000\000\003<\000\000\000\163\001D\003A\000\000\003N\001\232\001\216\000\000\003!\000\000\001\202\002a\000\000\005s\001\203\002b\000\163\001D\003(\000\000\001\217\005\130\003|\000\163\001D\001\233\005\178\001\200\001\223\003)\001\234\000\163\000\164\002d\001\235\000\000\001T\000\000\000\000\001\236\000\000\000>\005~\000\000\005\127\005d\005v\003 \000>\005w\002f\000\173\000\000\000\000\003W\004\182\003v\000\163\001D\000\000\000\000\003<\000\000\000\000\001_\003A\001j\003N\001\232\001\\\001T\003!\001]\001\202\000\173\000\000\000\000\001\203\000\000\000\000\001(\000\000\000\173\000\000\000\000\000\000\004\188\000>\001\233\005\164\000\210\000\000\000\231\001\234\001\200\001\201\004\225\001\235\001_\002\\\001`\001Y\001\236\001\\\000\000\000\000\001]\002\143\000\173\001\216\002\147\000\000\000\000\004\226\002a\001S\004\229\004t\002b\000\163\001D\003(\005\165\001\217\000\000\000\000\000\000\000\000\000\000\000>\000\000\005j\005\132\005>\000j\000\000\005\168\000\212\000j\000\000\001\202\000\213\000\000\000\000\001\203\000\000\000\000\000\000\000h\000\000\000>\002[\000\193\002f\000\000\002\148\000\000\0037\005\170\002\149\001\200\001\223\002\\\002\143\003<\000h\002\168\000\226\003A\000\190\003N\001\232\001\216\000\000\000>\004u\000\000\002a\005d\000\000\003 \002b\000\163\001D\003(\005\165\001\217\000\000\000\000\000\163\001D\001\233\000j\000\000\005j\005\132\001\234\000k\000\000\005\168\001\235\000l\001T\001R\003!\001\236\001\202\000j\000\000\000j\001\203\002\148\000\000\000\000\000k\002\149\002f\001S\000l\000\000\0037\005\170\005\167\001\200\001\223\000u\000\000\003<\000\163\000\164\001_\003A\001e\003N\001\232\001\\\002\187\000>\001]\001\216\000\173\002m\000u\003 \001\200\001\201\000\000\000\000\000\000\000\227\000\000\000\000\002\162\001\217\001\233\002\230\000>\000\000\000\000\001\234\002m\002\190\000\000\001\235\000\000\000\000\002\163\003!\001\236\001\202\000\163\005?\000\000\001\203\000\000\000\000\000\000\001\128\000\000\000\173\000\000\000\000\005J\005B\004\242\000h\004B\002\232\000j\000\189\001\202\000\163\001D\002\193\001\203\002\\\000\000\000\000\000\000\004 \000\000\002\004\000\000\003\156\001T\001\216\000\000\000v\002\162\000\000\002a\000\000\000\000\000\000\002b\000\163\001D\003(\005\165\001\217\000\000\001\233\002\163\000\000\000v\001\200\001\223\005j\005\132\000j\002\238\000w\005\168\0039\000k\001\236\002\195\001\\\000l\000>\001]\000\000\000\173\002m\003:\003V\000\000\000\000\000w\002f\002\196\000\000\000\000\0037\005\170\000\000\001\200\001\223\002\\\000\000\003<\000\000\000u\000\000\003A\000\000\003N\001\232\001\216\003!\000>\001\202\000\000\002a\002m\001\203\003 \002b\000\163\001D\003(\000\000\001\217\000\000\000\000\000\000\000\000\001\233\000\000\001\216\000\000\003)\001\234\000\000\004\160\003\145\001\235\000\163\001D\003(\003!\001\236\001\202\001\217\000\000\000\000\001\203\000\000\001\200\001\221\003)\004\161\002f\004\164\004t\000\000\0037\003\147\002u\001\200\001\223\000\000\000\000\003<\000\000\000\000\002k\003A\000\000\003N\001\232\003\007\003\154\000>\000\000\004E\003\156\002m\003\027\003 \000\000\000\000\003<\000\000\000v\000\000\003A\000\000\003N\002u\001\233\000\000\000j\000>\001\202\001\234\000\000\002m\001\203\001\235\002\\\000\000\003\007\003!\001\236\001\202\000\000\000\000\000w\001\203\001\216\001\233\004u\000>\001o\002a\000C\001\200\001\220\002b\000\163\001D\003(\004B\001\217\001\242\000\000\000\000\000\000\000\000\000\000\002\\\000\000\003)\000h\000\000\000\000\002d\000s\000\000\000\000\001\216\000\000\000E\000\000\001+\002a\000\000\000\000\000\000\002b\000\163\001D\003(\002f\001\217\000\000\000>\003W\000\000\003X\000j\000\000\001\202\003)\003<\000\000\001\203\003\145\003A\000\000\003N\001\232\000\000\000\000\000\000\000\000\000\000\000j\001-\000\000\000F\000\000\000k\000\000\002f\003C\000l\000\000\0037\003\147\000\000\001\233\001\216\002\\\000\000\003<\001\234\000\000\000\000\003A\001\235\003N\001\232\001\216\000\000\001\236\001\217\000\000\002a\001Y\000u\000F\002b\000\163\001D\003(\003C\001\217\000\000\000>\000\000\004\191\001\233\001S\001\200\001\223\003)\001\234\003H\000\000\003[\001\235\003Y\000\163\001D\003(\001\236\000\000\000>\000\000\000\000\000\000\002m\003:\003V\003L\003)\002f\000\000\000\000\000\000\0037\003]\000\163\001D\000\000\000\000\000>\003<\003H\000\000\001\216\003_\000\000\003N\001\232\001F\000\210\003!\000\233\001\202\004G\001Y\000\000\001\203\001\217\003L\001m\003<\000\000\001\200\001\201\003A\000\000\003N\001\233\001S\001\200\001\223\000\000\001\234\000\000\000v\000\000\001\235\003^\000\000\000\163\001D\001\236\000\000\000>\001p\000\000\001s\002m\003:\003V\000\000\000h\001T\000j\000\000\000s\000\212\000\000\000w\000\000\000\213\000\000\000>\000\000\000\000\001|\000j\000\000\001\202\000\000\000\000\000\000\001\203\003!\000\000\001\202\004|\000\000\000\000\001\203\001_\000\000\001\141\000\238\000x\001\\\000\226\000\000\001]\000\000\000\173\000\000\000E\004}\004t\000j\000\000\000\000\000\000\000\000\000k\002\\\000\163\001D\000l\000y\000\000\000\000\000\000\000\000\000\159\001\216\001\200\001\223\000\000\001T\002a\000\000\000\000\000{\002b\000\163\001D\003(\000\000\001\217\000>\000\000\000u\000\000\002m\003n\003V\000\000\003)\000\000\000\000\000\000\002d\000\000\000\163\000\164\000\000\001_\000\000\002q\000>\000\000\001\\\000\000\005>\001]\004u\000\173\000\000\002f\003!\000\000\001\202\003W\000\000\003X\001\203\000\000\002\\\000\000\003<\001\216\000\227\000\000\003A\000\000\003N\001\232\001\216\002\143\002t\000\000\002\167\002a\000\239\001\217\000\000\002b\000\163\001D\003(\000\000\001\217\001*\000\000\000\173\000\000\001\233\000\241\001\200\001\223\003)\001\234\000\000\000\000\002d\001\235\000\163\001D\000\000\000\000\001\236\000\000\000>\000v\000\000\000\000\002m\003n\003V\001F\000\251\002f\000j\000\000\000\000\003W\002\148\003X\000\000\000\000\002\149\000\000\003<\000\000\000\000\000\000\003A\000w\003N\001\232\000\252\000\210\003!\000\211\001\202\000\253\000\000\000\000\001\203\000\254\002\\\000\000\001\233\000\000\000\255\001p\000\000\001s\000\000\001\233\001\216\001\200\001\223\000x\001\234\002a\001\244\004\148\001\235\002b\000\163\001D\003(\001\236\001\217\000>\003u\000\000\000\000\002m\003n\003V\000>\003)\000y\000j\005>\002d\000\212\000\162\000\163\001D\000\213\000\000\000\000\000\000\000h\004\160\000{\000\000\000q\000\000\005A\005e\002f\003!\000\000\001\202\003W\000\000\003v\001\203\000\000\004|\004\161\003<\004\164\004t\000\226\003A\000\000\003N\001\232\002\162\000\000\000\000\000\000\000\000\001\200\001\201\004}\004t\002\143\002\\\000\000\002\166\000\000\002\163\000\000\003\005\000j\003\019\001\233\001\216\000\000\000k\000\000\001\234\002a\000l\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\003w\000\000\000\000\000\000\001\200\001\223\000\000\003)\000\000\000\000\000\000\002d\000\000\000j\000u\001\202\004u\000j\000>\001\203\000\000\002\148\002m\003\148\003V\002\149\000\000\000\000\002f\000\000\004u\000\000\003W\000\000\003v\0011\000\000\002\\\000\000\003<\000\000\000\227\000\000\003A\000\000\003N\001\232\001\216\003!\000\000\001\202\000\000\002a\000\000\001\203\000\000\002b\000\163\001D\003(\000\000\001\217\000\000\003\137\000\163\005?\001\233\001\200\001\223\000\000\003)\001\234\000\000\004\225\002d\001\235\005A\005B\000\000\000\000\001\236\000>\003\150\000\000\000\000\002m\003\148\003V\000\000\002\143\004\226\002f\002\147\004\229\004t\003W\000v\003v\000\000\000\000\000\000\000>\003<\000\000\000\000\000\000\003A\000\000\003N\001\232\000\252\003!\000\000\001\202\001\216\001\"\000\000\001\203\002\162\000\000\000w\000\000\000\000\000\000\001\003\000\000\004\248\004\225\001\217\001\233\000\000\000\000\002\163\000j\001\234\000\000\000\000\002\148\001\235\002\\\000\000\002\149\004\146\001\236\004\226\003\152\000\149\004\229\004t\001\216\000\000\000\000\004u\000\000\002a\005{\000\000\000\000\002b\000\163\001D\003(\000\000\001\217\000\000\000\000\000\000\000y\000\000\001\200\001\223\000\150\003)\000\000\000\000\000\151\002d\003\170\000\000\000\000\000\000\000{\000\000\000>\000\000\000\000\000\000\002m\003:\003V\000\000\000\000\000>\002f\000\000\000\000\001\218\003W\000\000\003\151\001\200\001\223\002\\\000\000\003<\000\000\004u\000\000\003A\000\000\003N\001\232\001\216\003!\000>\001\202\000\000\002a\002m\001\203\003 \002b\000\163\001D\003(\000\000\001\217\000\000\000\210\000\000\000\230\001\233\000\000\000\000\002\162\003)\001\234\004\225\000\000\002d\001\235\000\000\000\163\001D\003!\001\236\001\202\000\000\002\163\000\000\001\203\000\000\001\200\001\219\004\226\005s\002f\004\229\004t\000\000\003W\004\255\003\151\001\200\001\223\000\000\000\000\003<\000\000\000\000\000\000\003A\000j\003N\001\232\000\212\004\020\000>\000\000\000\213\003\156\002m\000\000\003 \005}\000\000\000\000\000\000\005v\000\000\000\000\005w\002\143\000\173\001\233\002\147\000j\000\000\001\202\001\234\004\225\000\000\001\203\001\235\002\\\000\226\000\000\003!\001\236\001\202\000\000\000\000\004|\001\203\001\216\005\007\004u\004\226\002\195\002a\004\229\004t\000\000\002b\000\163\001D\003(\000\000\001\217\004}\004t\000\000\002\202\000\163\000\164\002\\\002[\003)\000\000\004\"\002\148\002d\000\000\003\156\002\149\001\216\000\000\000\000\000\000\000\000\002a\000\000\000\000\000\000\002b\000\163\001D\003(\002f\001\217\000\000\000>\003W\000\000\003X\000\210\000\000\000\211\003)\003<\000\000\000\000\003\145\003A\004|\003N\001\232\000>\000\000\004u\000\000\000\000\001\130\000\000\000\173\000\000\000\000\000\227\004u\002f\000\000\004}\004t\0037\003\147\000\000\001\233\001\216\002\\\000\000\003<\001\234\000\000\000\000\003A\001\235\003N\001\232\001\216\000j\001\236\001\217\000\212\002a\001Y\000\000\000\213\002b\000\163\001D\003(\002\187\001\217\000\000\000\000\005\n\000\000\001\233\001S\001\200\001\223\003)\001\234\000\000\000\000\003\145\001\235\002\162\002\223\002\224\002\226\001\236\000\226\000>\004|\000\000\002\190\002m\000\000\003 \004u\002\163\002f\000\000\000\000\000\000\0037\003\147\000\000\000\000\000\000\004}\004t\003<\004|\000\000\000\000\003A\000\000\003N\001\232\000\000\002\229\003!\000\000\001\202\000\000\000\000\002\193\001\203\004|\004}\004t\000\000\000\000\000\000\000\000\000\000\005\017\000\000\001\233\000\000\001\200\001\223\000\000\001\234\000\000\004}\004t\001\235\004\144\000\000\000\163\001D\001\236\004$\000>\000\000\000\000\003\156\002m\000\000\003 \000\000\000\210\001T\000\211\000\000\000\163\000\164\004u\002\195\000\000\000\000\000\227\000\000\000\000\000\000\000\000\000h\000\000\001\200\001\201\000q\000\000\002\196\003!\000\000\001\202\000\000\004u\000\000\001\203\001_\000\000\002\255\000\000\000\000\001\\\000\000\000\000\001]\000\000\000\173\000\000\000\000\004u\000\000\000j\000\000\000\000\000\212\004\180\000\000\002\\\000\213\000\000\001\132\005N\000\173\000\000\000\000\003\156\000j\001\216\000j\000\000\001\202\000k\002a\000\000\001\203\000l\002b\000\163\001D\003(\000\000\001\217\000\000\000\000\000\226\001=\000\252\001\200\001\223\000\000\003)\004|\000\000\000\000\003\145\005V\004|\000\000\000\000\000u\001\005\000>\000\000\000\000\000\000\002m\003:\003V\004}\004t\000\000\002f\000\000\004}\004t\0037\003\147\000\000\001\200\001\223\002\\\000\000\003<\000\000\000\000\004\185\003A\000\000\003N\001\232\001\216\003!\000>\001\202\000\000\002a\002m\001\203\003 \002b\000\163\001D\003(\000\000\001\217\004\195\000\210\000\000\000\211\001\233\000\000\000\000\000\000\003)\001\234\000\000\000\000\003\145\001\235\000\000\000\000\004\204\003!\001\236\001\202\000\000\000\227\004u\001\203\001\216\000\000\000\000\004u\000\000\002f\000\000\000\000\000\000\0037\003\147\000\000\000v\000\000\001\217\000\000\003<\000\000\000\000\000\000\003A\000j\003N\001\232\000\212\005\\\000\000\000\000\000\213\003\156\000\000\000\148\000\000\000\000\000\000\000\000\000w\000\000\000\000\000\000\000\000\002\143\000>\001\233\002\147\000\000\000\000\000\000\001\234\000\000\000\000\000\000\001\235\002\\\000\226\000\000\000\000\001\236\000\000\000\000\000\000\000\000\000\149\001\216\000\000\000\000\000\252\000\000\002a\000\000\000\000\000\000\002b\000\163\001D\003(\000\000\001\217\000\000\000\000\001\007\000\000\001\233\000y\002\\\002[\003)\000\150\000\000\002\148\002d\000\151\000\000\002\149\001\216\001Y\001\246\000{\000\000\002a\000\000\000\000\000\000\002b\000\163\001D\003(\002f\001\217\001S\004\202\003W\000\000\003X\000\000\004\246\000\000\003)\003<\000\000\000\000\003\145\003A\000\000\003N\001\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\227\000\000\002f\000\000\000\000\000\000\0037\003\147\000\000\001\233\000\000\000\000\000\000\003<\001\234\000\000\000\000\003A\001\235\003N\001\232\000\000\000\000\001\236\001\200\001\223\000\000\000\000\000\210\000\000\000\229\000\000\005\136\000\000\002\187\000\000\000\000\000\000\000>\000\000\001\233\000\000\002m\003:\003V\001\234\000\000\000\163\001D\001\235\002\162\002\223\005X\002\226\001\236\000\210\000\000\000\211\000\000\002\190\001T\000\000\000\000\000\000\002\163\003\165\001\200\001\223\003!\000\252\001\202\000\000\000j\000\000\001\203\000\212\000\000\000\000\000\000\000\213\000>\000\000\000\000\001\t\002m\002\229\003V\000\000\001_\000\000\003\n\002\193\000\000\001\\\000\000\000\210\001]\000\233\000\173\000j\000\000\000\000\000\212\000\000\000\000\000\226\000\213\000\000\000\000\000\000\003!\000\000\001\202\000\000\000\000\000\000\001\203\000\000\000\000\000\000\000\000\000\000\000\000\002\143\000\000\005-\002\147\000\000\000\000\000\000\000\000\000\000\000\226\000\000\002\195\000\000\000\000\000\000\000\000\000j\001\200\001\223\000\212\000\000\000\000\000\000\000\213\000\000\002\196\000\000\000\000\003Z\000\000\000\000\000>\000\000\000\000\000\000\002m\002\\\003 \000\000\000\000\000\000\000\000\000\000\000\000\000j\000\000\001\216\000\000\002\148\000\226\000\000\002a\002\149\000\000\000\000\002b\000\163\001D\003(\000\000\001\217\003!\000\000\001\202\000\227\000\000\000\000\001\203\000\000\003)\000\000\000\000\000\000\002d\002\143\000\000\000\000\002\147\002\\\000\000\000\000\000h\000\000\000\000\000\000\000q\000\000\000\000\001\216\000\000\002f\000\227\000\000\002a\003W\000>\003X\002b\000\163\001D\003(\003<\001\217\000\000\000\000\003A\000\000\003N\001\232\000\000\000\000\003)\000\000\000\000\000\000\003\167\000\000\000\000\002[\000\000\000\000\000\000\002\148\000\000\000\000\000j\002\149\000\000\001\233\000\000\000k\000\227\002f\001\234\000l\000\000\003W\001\235\003\169\000\000\000>\000\000\001\236\003<\000\000\002\162\000\000\003A\000\000\003N\001\232\000\000\002\\\000\000\000\000\000\000\000\000\005+\000u\002\163\000\228\000\000\001\216\000\000\000\000\000\000\000\000\002a\000\000\000\000\001\233\002b\000\163\001D\003(\001\234\001\217\000\000\000\000\001\235\000\251\001\200\001\223\000\000\001\236\003)\000\000\000\000\000\000\0035\000\000\000\000\003\031\001Y\000\000\000>\000\000\000\000\000\000\002m\000\252\003 \000\000\002\187\000\000\000\253\002f\001S\000\000\000\254\0037\0038\000\000\002\143\000\255\000\000\002\147\003<\000\000\002\162\000\000\003A\002\230\003N\001\232\003!\000\000\001\202\002\190\002\195\000\000\001\203\000\000\002\163\000\000\000\000\000\163\000\164\000\000\000\000\000v\000\000\000>\002\204\001\233\000\000\000\000\000\000\000\000\001\234\000\000\000\000\000\000\001\235\002\232\001\200\001\223\002[\001\236\000\191\002\193\002\148\000\000\000\000\000w\002\149\003;\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \000\000\000\000\000\000\000\000\000\000\000\163\001D\000\000\000\000\001.\000\000\000\173\000\000\000\000\000\149\000\000\000\000\000\000\001T\001Y\000\000\002\237\000\000\003!\000\000\001\202\000\000\002\195\000\000\001\203\000\000\000\000\000\000\001S\000\000\000y\000\000\000\000\000\000\000\150\002\\\002\196\000\000\000\151\000\000\000\000\001_\000\000\003/\000{\001\216\001\\\000\000\000\000\001]\002a\000\173\000\000\000\000\002b\000\163\001D\003(\000\000\001\217\000\000\002\187\000\000\000\000\001\200\001\223\000\000\000\000\003)\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\002\162\000>\000\000\002\230\000\000\002m\000\000\003 \000\000\002\190\000\000\000\000\002f\000\000\002\163\000\000\0037\0038\000\000\000\000\000\000\000\000\000\000\003<\000\000\000\163\001D\003A\000\000\003N\001\232\003!\002\\\001\202\000\000\002\232\000\000\001\203\001T\000\000\000\000\002\193\001\216\001\200\001\201\000\000\000\000\002a\000\000\000\000\001\233\002b\000\163\001D\003(\001\234\001\217\000\000\000\000\001\235\000\000\001\200\001\223\000\000\001\236\003)\001_\000\000\003E\0035\000\000\001\\\000\000\000\000\001]\000>\000\173\000\000\002\235\002m\000\000\003 \000\000\000\000\002\195\000\000\002f\000j\000\000\001\202\0037\0038\000\000\001\203\000\000\000\000\000\000\003<\002\196\000\000\000\000\003A\000\000\003N\001\232\003!\000\000\001\202\000\000\000\000\000\000\001\203\000\000\000\000\000\000\000\000\000\000\001\200\001\223\000\000\000\000\000h\002\\\000\000\001\233\000s\000\000\000\000\000\000\001\234\000\000\000>\001\216\001\235\000\000\003\183\000\000\002a\001\236\000\000\000\000\002b\000\163\001D\003(\000\000\001\217\000\000\000\000\000\000\000\000\000\000\003y\000\000\004\n\003)\000\000\000\000\000\000\003r\000h\003\218\000\000\001\202\000i\000j\000\000\001\203\000\000\000\000\000k\000\000\000\000\000\000\000l\000\000\002f\000\000\000\000\000\000\0037\003t\000\000\003\224\000\000\000\000\000\000\003<\001\216\000\000\000\000\003A\000\000\003N\001\232\000\000\002\\\000\000\000u\000\000\000\000\000\000\001\217\000\000\000j\000\000\001\216\001\200\001\223\000k\000\000\002a\000\000\000l\001\233\002b\000\163\001D\003(\001\234\001\217\000>\000\000\001\235\000\000\002m\003q\003 \001\236\003)\000\000\000\000\000\000\003r\000h\000\000\000\000\000u\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002f\003!\000\000\001\202\0037\003t\000\000\001\203\000\000\000\000\000\000\003<\001\216\000\000\000\000\003A\000\000\003N\001\232\000\000\001\233\000\000\000\163\001D\003\225\000\000\001\217\000\000\000j\000\000\000v\001\200\001\223\000k\001\248\003\226\000\000\000l\001\233\003\238\000\000\000\000\000\000\001\234\000\000\000>\000\000\001\235\000\000\002m\000\000\003 \001\236\000\000\000w\000\000\000h\000\000\000\000\000\000\000q\000u\000\000\000\000\000>\000\000\000\000\003\240\000\000\000v\000\000\003\245\000\000\003\252\001\232\003!\000\000\001\202\000\000\000\000\000x\001\203\000\000\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\233\000\000\002\\\000w\001\233\000\000\000\000\000\000\000\000\001\234\000j\000y\001\216\001\235\000\000\000k\000\235\002a\001\236\000l\000\000\002b\000\163\001D\003(\000{\001\217\001Y\000\000\000\145\000\000\003\133\000\000\000\000\000\000\003)\000\000\000\000\000\000\003\134\000h\001S\000j\000u\000q\000\212\000\000\000\000\000\000\000\213\000y\000\000\000\000\000v\000\000\000\000\002f\000\000\000\000\000\000\0037\003\136\000\000\000\000\000\127\000\000\000\000\003<\000\000\000\000\000\000\003A\000\000\003N\001\232\000\226\002\\\000w\000\000\000\000\000\000\000\000\000\000\000\000\000j\000\000\001\216\001\200\001\223\000k\000\000\002a\000\000\000l\001\233\002b\000\163\001D\003(\001\234\001\217\000>\000\000\001\235\000\000\002m\003\131\003 \001\236\003)\000\000\000\000\000\000\003r\000\000\000\163\001D\000u\000\000\000\000\000\000\000\000\000\000\000\000\000y\000v\000\000\000\000\001T\000\000\002f\003!\000\000\001\202\0037\003t\000\000\001\203\000\129\000\000\000\000\003<\000\000\000\000\000\148\003A\000\000\003N\001\232\000w\000\000\000\000\000\000\000\000\000\000\000\000\001_\000\227\003\196\000\000\000\000\001\\\000\000\000\000\001]\000\000\000\173\003\144\001\233\000\000\001\200\001\223\000\000\001\234\000\000\000\149\000\000\001\235\000\000\000\000\000\000\000\000\001\236\000\249\000>\000\000\000\000\000\000\002m\002\242\003 \000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000v\000\150\001\200\001\223\000\000\000\151\000\000\000\251\000\000\000h\000\000\000{\005R\000i\000\000\003!\000>\001\202\000\000\002\183\002m\001\203\003 \002\\\000w\000\000\000\000\000\252\000\000\000\000\000\000\000\000\000\253\001\216\000\000\000\000\000\254\000\000\002a\000\000\000\000\000\255\002b\000\163\001D\003(\003!\001\217\001\202\000\000\000\149\003\149\001\203\000j\000\000\000\000\003)\000\000\000k\000\000\003\145\000\000\000l\000\000\000\000\000\000\000\000\000\210\000\000\000\233\000\000\000y\000\000\000\000\000\000\000\150\000\000\002f\000\000\000\151\000\000\0037\003\147\000\000\000\000\000{\000u\000\000\003<\000\000\001\200\001\223\003A\000\000\003N\001\232\000\000\000\000\000\000\000\000\005^\000\000\000\000\000\000\000>\000\000\002\\\000\000\002m\000\000\003 \000j\000\000\000\000\000\212\001\233\001\216\000\000\000\213\000\000\001\234\002a\000\000\000>\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\003!\000\000\001\202\002\\\000\000\003)\001\203\000\000\000\000\003\145\000\226\000\000\000\000\001\216\000\000\000\000\000\000\000\000\002a\000\000\000\000\000\000\002b\000\163\001D\003(\002f\001\217\000\000\000\000\0037\003\147\000\000\000\000\000v\000\000\003)\003<\000\000\000\000\005S\003A\001Y\003N\001\232\000\000\000\000\000\000\000\000\000h\000\000\000\000\000\000\000s\000\000\000\000\001S\002f\000w\000\000\000\000\0037\005U\000\000\001\233\000\000\000\000\000\000\003<\001\234\001\200\001\223\003A\001\235\003N\001\232\000\000\000\000\001\236\000\000\005a\000\000\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \002\\\000\227\000j\000\000\001\233\001\200\001\201\000k\000\000\001\234\001\216\000l\000\000\001\235\000y\002a\000\000\000\000\001\236\002b\000\163\001D\003(\003!\001\217\001\202\000\000\004*\000\131\001\203\000\000\000\000\000\000\003)\000\000\000u\000\000\005S\000\000\000\163\001D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000j\000\251\001\202\001T\000\000\002f\001\203\000\000\000\000\0037\005U\000\000\000\000\000\000\000\000\000\000\003<\000\000\000\000\000\000\003A\000\252\003N\001\232\000\000\000\000\000\253\000\000\000\000\000\000\000\254\001_\000\000\003\232\000\000\000\255\001\\\000\000\000\000\001]\000\000\000\173\000\000\001\233\001\200\001\223\000\000\000\000\001\234\000\000\000\000\000h\001\235\000\000\000\000\000s\000\000\001\236\000>\000\000\000\000\000\000\003\183\000h\000\000\002\\\000\000\000q\000v\000\000\000\000\000\000\000\000\000\000\000\000\001\216\000\000\000>\000\000\000\000\002a\003\215\000\000\000\000\002b\000\163\001D\003(\003\218\001\217\001\202\000\000\000w\000\000\001\203\000j\000\000\000\000\003)\000\000\000k\001\216\005S\000\000\000l\000\000\000\000\000j\000\000\000\000\003\224\000\000\000k\000\000\000\000\001\217\000l\000\000\000x\002f\000\000\000\000\000\000\0037\005U\000\000\000\000\000\000\000u\000\000\003<\000h\001\200\001\223\003A\000i\003N\001\232\004\006\000y\000u\001\228\000\000\001 \000\237\000\000\000>\000\000\000\000\000\000\003\183\000\000\000\000\000{\000\000\000\000\000\000\001\233\000\000\000\000\000\000\000>\001\234\000\000\000\000\000\000\001\235\000\000\000\000\003\217\000\000\001\236\000\000\000\000\000\000\000j\003\218\000\000\001\202\000\000\000k\000\000\001\203\001\233\000l\000\000\000\210\000\000\000\211\001\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\003\224\000\163\001D\003\225\000\000\001\217\000\000\000\000\000\000\000\000\000u\000\000\000v\000\000\003\226\000\000\001Y\000\210\004\008\000\211\000\163\000\164\000\000\000h\000v\000\000\000\000\000q\000\000\000\000\001S\000\000\000j\000\000\000\000\000\212\000w\000>\000\000\000\213\000\167\000\168\000\170\000\171\000\000\000\000\003\240\000\000\000w\000\000\004\t\000\000\003\252\001\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000j\000x\000\000\000\212\000\226\000h\000j\000\213\000\172\000q\000\173\000k\001\233\000\149\000\000\000l\000\000\001\234\001\216\000>\000\000\001\235\000y\000\000\000\000\000\000\001\236\001\225\000\163\001D\003\225\000v\001\217\000\226\000y\000\000\000{\000\000\000\150\000u\000\000\003\226\000\151\000\163\001D\003\238\000\000\000\000\000{\000j\000\178\000\000\000\000\000\000\000k\000w\001T\000\000\000l\000h\000\000\000\000\000\000\000s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\240\000\000\000\000\000\000\003\245\000\000\003\252\001\232\000h\000u\000\000\001[\000q\000\227\000\000\000\000\001\\\000\000\000\000\001]\000\000\000\173\000>\000\000\000\000\000\000\000\000\001\233\000\000\000y\000j\000\000\001\234\000\000\000\000\000k\001\235\000\000\000\000\000l\000\000\001\236\000\227\000\133\000\163\000\164\000\000\000\000\000v\000\000\000\000\000\000\000j\000\000\000\000\000\000\000\000\000k\000\000\000\000\000\000\000l\000\000\000u\000\167\000\217\000\170\000\171\000\000\000\000\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\252\000\000\000\000\000u\000\000\000\163\000\164\000\000\000\000\000v\000\000\000\172\000\000\000\173\001\011\000\000\000\149\000\000\000h\000\000\001\200\001\201\000q\000\000\000\000\000\167\001\207\000\170\000\171\000\252\000h\000\000\000>\000w\000i\000\000\000\000\000y\000\000\000\000\000\000\000\150\000\000\001\013\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000{\000\000\000\178\000\172\000\000\000\173\000\000\000\000\000\149\000\000\000h\000j\000v\000j\000q\001\202\000k\000\000\000\000\001\203\000l\000\000\000\000\000j\000>\001\200\001\201\000\000\000k\000y\000\163\000\164\000l\000\150\000v\000\000\000w\000\151\000\000\000\000\000\000\000\000\000\000\000{\000u\000\178\000\000\000\210\000\000\000\211\000\167\002^\000\170\000\171\000j\000\000\000u\000\000\000w\000k\000\000\000\000\000x\000l\000\000\000\000\000\000\000\000\000\000\000j\000\000\001\202\000\000\000\000\000\000\001\203\000\000\000\000\000\000\000\172\000\000\000\173\000\000\000y\000\149\000\000\000h\000u\001\227\000\000\000q\000j\000\000\000\000\000\212\000\000\000\000\000{\000\213\000\000\000>\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\150\000\000\000\000\000\000\000\151\001\216\000\000\000\000\000\000\000\000\000{\000\000\000\178\000\163\000\164\000\226\000\000\000v\000\000\001\217\000\000\000j\000\000\000\000\000\000\000\000\000k\000\000\000\000\000v\000l\000\000\000\000\000\167\002\153\000\170\000\171\000\000\000\000\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000w\000u\000\000\000\163\000\164\000\000\000\000\000v\001\216\000\172\000\000\000\173\000\000\000\000\000\149\000\000\000h\000\000\000\000\000\000\000q\000\000\001\217\000\167\003>\000\170\000\171\000\000\000h\000\000\000>\000w\000q\000\000\001\233\000y\000\000\000\000\000\000\000\150\000\000\000\000\000>\000\151\000\227\000\000\000\000\000y\001\252\000{\000\000\000\178\000\172\000\000\000\173\000\000\000\000\000\149\000\000\000\000\000j\000\135\000h\000\000\000\000\000k\000q\000\000\000\000\000l\000\000\000\000\000j\000\000\000\000\000\000\000\000\000k\000y\000\163\000\164\000l\000\150\000v\000\000\000\000\000\151\000\000\000\000\000\000\001\233\000\000\000{\000u\000\178\000\000\001\200\001\201\000\000\000\167\003\242\000\170\000\171\000\000\001\254\000u\000j\000w\000h\000\000\000\000\000k\000q\000\252\000\000\000l\000\000\000\000\000\000\000\000\000h\000\000\000>\000\000\000q\001\021\000\000\001\015\000\172\000\000\000\173\000\000\000\000\000\149\000>\000\000\000\000\000\000\000\000\000u\000j\000\000\001\202\000\000\000\000\000\000\001\203\000\000\000\000\000h\000\000\000\000\000j\000i\000y\000\000\000\000\000k\000\150\001\200\001\223\000l\000\151\000\000\000j\000\000\000\000\000\000\000{\000k\000\178\000\163\000\164\000l\000\000\000v\000\000\000\000\000\000\002T\003k\000\000\000\000\000\163\000\164\000u\000\000\000v\000\000\000\000\000\000\000\000\000\000\000j\000\194\000\000\000\000\000u\000k\000w\000h\000\000\000l\002[\000q\001\202\000\194\000\000\000\000\001\203\000\000\000w\000\000\000\000\000>\000\000\000\000\000\000\000\000\000\000\000\196\000v\000\173\000\000\000\000\000\149\000u\000\000\000\000\000\000\000\000\000\000\0014\000\000\000\173\000\000\000\000\000\149\000\000\000\000\000\148\001\216\000\000\000\000\000j\000w\000y\000\000\000\000\000k\000\150\000\000\000\000\000l\000\151\001\217\000\000\000\000\000y\000\000\000{\000\000\000\150\000\163\000\164\000\000\000\151\000v\000\000\000\000\000\000\000\149\000{\000\000\000\000\000\163\000\164\000u\000\000\000v\000\000\000\000\000\000\000\000\000\000\000\000\000\191\000\000\000\000\000\000\000\000\000w\000y\000\000\002\\\000\000\000\150\000\000\001\183\000\000\000\151\001\200\001\223\000w\001\216\000\000\000{\000\000\000v\002a\000\000\000\000\001:\002b\000\173\000\000\000\000\000\149\001\217\000\000\000\000\002T\003a\001\233\001\185\000\210\000\173\000\211\000\000\000\149\000\000\002d\000w\000\000\000\000\000\000\000\000\002\000\000y\000\000\000\000\000\000\000\150\000\000\000\000\002[\000\151\001\202\002f\000\000\000y\001\203\000{\000\000\000\150\000\163\000\164\000\000\000\151\000v\000\000\000\000\000\000\000\000\000{\000\000\001\232\001\200\001\223\000j\000\000\000\000\000\212\000\000\000\000\000\000\000\213\000\000\001\183\000y\000\000\000\000\000\000\000w\000\000\000\000\001\233\002T\002U\000\000\000\000\001\234\000\000\000\137\000\000\001\235\000\000\000\000\000\000\000\000\001\236\000\000\000\226\000\000\002\012\000\000\000\173\000\000\000\000\000\149\000h\002[\000h\001\202\000q\000\000\000i\001\203\000\000\000\000\000\000\000\000\000\000\000\000\000>\000\000\000\000\000\000\001\200\001\223\000y\000\000\000\000\000\000\000\150\000\000\002\\\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000{\000\000\001\216\000\000\002T\002`\000\000\002a\000\000\000\000\000j\002b\000j\000\000\000\000\000k\001\217\000k\000\000\000l\000\000\000l\000h\000h\000\000\000\000\000i\000q\002[\002d\001\202\000\000\000\000\000\000\001\203\000\000\000\000\000>\000\000\000\000\000\227\000\000\000\000\000u\000\000\000u\002f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\\\000\210\000\000\000\211\000\000\000\000\001\232\000\000\000j\000j\001\216\000\000\000\000\000k\000k\002a\000\000\000l\000l\002b\000\000\000\000\000\000\000\000\001\217\000\000\001\233\000\000\000\000\000\000\000\210\001\234\000\233\000\000\000\000\001\235\000\000\002d\001\200\001\223\001\236\000u\000u\000\000\000\000\000j\000\000\000\000\000\212\000\000\000\000\000\252\000\213\000\000\002f\000\000\000\000\000\000\002T\003m\000\000\002\\\000\000\000\163\000\164\001\017\000\000\000v\000\000\000v\000\000\001\216\001\232\000\000\000j\000\000\002a\000\212\000\226\000\000\002b\000\213\002[\000\000\001\202\001\217\002\127\000\000\001\203\000\000\000\000\000w\001\233\000w\000\000\000\000\000\000\001\234\002d\000\000\000\000\001\235\000\000\000\000\000\000\000\000\001\236\000\226\000\000\000\000\000\000\000\000\002\129\000\000\000\173\002f\000\000\000\149\000\000\000\000\000\163\000\164\000\000\000v\000v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\232\000\000\000\000\001\200\001\223\000y\000\000\000y\000\000\000\150\002\127\000\000\000\000\000\151\000w\000w\000\000\000\000\000\000\000{\001\233\000\139\000\000\002T\0044\001\234\000\000\000\227\000\000\001\235\000\000\000\000\000\000\000\000\001\236\000\000\002\145\000\000\000\173\000\000\002\\\000\149\001\200\001\201\000\000\001\200\001\223\002[\000\000\001\202\001\216\000\000\000\000\001\203\000\000\002a\000\227\000\000\000\000\002b\000\000\000y\000y\000\000\001\217\003d\000\150\000\000\000\000\000\000\000\151\000\000\000\000\000\000\000\000\000\141\000{\002d\001\200\001\223\000\000\000\000\004,\000\000\000\000\000\000\000j\000\000\001\202\002[\000\000\001\202\001\203\000\000\002f\001\203\000\252\000\000\002T\0046\000\000\000\000\000\000\000\000\000\000\000\251\001\200\001\223\000\000\000\000\001\019\000h\001\232\000\000\000h\000q\000\000\000\000\000q\000\000\000\000\000\000\002[\000\000\001\202\000\252\002T\0048\001\203\000\000\000\253\000\000\001\233\000\000\000\254\000\000\000\000\001\234\002\\\000\255\000\000\001\235\000\000\000\000\000\000\000\000\001\236\000\000\001\216\000\000\002[\000\000\001\202\002a\000\000\000j\001\203\002b\000j\000\000\000k\000\000\001\217\000k\000l\000\000\000\000\000l\000\210\000\000\000\211\000\000\000\000\000\000\002\002\002d\000\000\0029\000h\000\000\002\\\000\000\000q\000\000\000\000\000\000\000\000\001\216\000u\000\000\001\216\000u\002f\000\000\000h\002a\000\000\000\000\000q\002b\000\000\001\217\000\000\000\000\001\217\000h\000\000\000\000\000\000\000q\001\232\000\000\000j\002\\\000\000\000\212\000\000\002d\000\000\000\213\000\000\000\000\000j\001\216\000\000\000\000\000\000\000k\002a\000\000\001\233\000l\002b\000\000\002f\001\234\000\000\001\217\000j\001\235\000\210\002\\\000\233\000k\001\236\000\226\000\000\000l\000\000\000j\002d\001\216\001\232\000\000\000k\000u\002a\002;\000l\000\000\002b\000\000\000h\000\000\000\000\001\217\000q\002f\002=\001\233\000v\000u\001\233\000v\000\000\000\000\002|\001\234\002d\000\000\000\000\001\235\000u\002\006\000j\001\232\001\236\000\212\000\000\000\148\000\000\000\213\000\148\000\000\000w\002f\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\233\000j\000\000\000\000\000\000\001\234\000k\000\000\001\232\001\235\000l\000\210\000\226\000\233\001\236\000\149\000h\000\000\000\149\000\000\000q\000\000\000\227\000\000\000\000\000\000\000\000\000h\001\233\000\000\000\000\000q\000v\001\234\000u\000\000\000y\001\235\000\000\000y\000\150\000\000\001\236\000\150\000\151\000\000\000\000\000\151\000v\000\000\000{\001\"\000\000\000{\000\000\000j\000w\000\000\000\212\000v\000j\000\000\000\213\000\000\000\000\000k\000\000\000\148\000\000\000l\002\143\000j\000w\002\147\000\000\000\000\000k\000\000\000\148\000\000\000l\000\000\000\149\000w\000\000\000\000\000\000\000\000\000\226\000\000\000\000\000\252\000h\000u\000\227\000\000\000q\000\000\000\149\000\000\000\000\000\000\000\000\000y\000u\001\025\002\181\000\150\000\000\000\149\000\000\000\151\000\000\000\000\000j\000\000\000v\000{\002\148\000y\004.\000\000\002\149\000\150\000\000\000\000\000\000\000\151\000\000\000\000\000y\000\000\000\000\000{\000\150\002\183\000j\000\000\000\151\000\000\000w\000k\000\000\000\251\000{\000l\000\000\000\000\000\000\000h\000\000\000\000\000\000\000q\000\000\000\000\000\000\000\000\000\000\000\000\000h\000\000\000\000\000\252\000q\003\003\000\149\000\000\000\253\000u\000\227\000\000\000\254\000\000\000\000\000v\003\015\000\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000v\000y\000\000\000\000\000\000\000\150\000\000\000j\002\183\000\151\004>\000\000\000k\000w\000\000\000{\000l\000h\000j\002\183\000\000\000q\000\000\000k\000w\000\000\000\000\000l\000h\002\162\000\000\000\000\000q\000\251\000\000\000\000\000\000\000\000\000\000\000\149\000u\000\000\000\000\002\163\000h\000\000\000\000\000\000\000i\000\000\000\149\000u\000\000\000\252\000\000\003\023\000\000\000\000\000\253\000\000\000y\000j\000\254\000\000\000\150\000v\000k\000\255\000\151\000\000\000l\000y\000j\000\000\000{\000\150\000h\000k\000\000\000\151\000q\000l\000\000\000\000\002\183\000{\000\000\000\000\000j\000w\000\000\000\000\000\000\000k\000u\000\000\000\000\000l\000h\000\000\000\000\000\000\000q\000\000\000\000\000u\000\000\000\000\000\000\000\000\000\000\005%\003$\002\195\000h\000\149\000\000\000\000\000q\000\000\000j\000u\000v\0033\000\000\000k\000\000\002\206\000\000\000l\000\000\000\000\000\000\000v\000\000\000\000\000y\000\210\000\000\000\211\000\150\002\183\000j\000\000\000\151\000\000\000w\000k\000\000\000\000\000{\000l\002\183\000u\000\000\000\000\000\000\000w\000j\000\000\000\000\000\000\000\000\000k\000\000\000\000\003J\000l\000\000\000\000\000\000\002\143\000\149\000\000\002\147\000u\000v\003R\000\000\000\000\000\000\000j\000\000\000\149\000\212\000\000\000\000\000v\000\213\000\000\000h\000u\000h\000y\000q\002\183\000q\000\150\000\000\000\000\000w\000\151\000\000\000v\000y\000\000\002\183\000{\000\150\000\000\000\000\000w\000\151\000\000\000\226\000j\000\000\000\000\000{\002\148\000\000\000\000\000\000\002\149\000\000\003\188\000\149\000w\000\000\000\000\000\000\000\000\000\000\000\000\000j\000v\000j\000\149\000h\000k\000\000\000k\000q\000l\000\000\000l\000\000\000y\000\000\000h\000\000\000\150\000\000\000q\002\183\000\151\000\000\000v\000y\000w\000h\000{\000\150\003\200\000q\000\000\000\151\000u\000\000\000u\000\000\000\000\000{\000v\000y\000\000\0052\000\000\000\000\000\000\000\000\000w\000j\000\000\000\000\000\149\000\000\000k\000\143\000\000\000\000\000l\002\183\000j\000\000\000\000\000\227\000w\000k\000\000\000\000\000\000\000l\000\210\000j\000\211\000y\000\149\000\000\000k\000\150\000\000\000\000\000l\000\151\000u\002\162\000\000\000h\000\000\000{\000\000\000q\000\149\000\000\000h\000u\000\000\000y\000q\002\163\000\000\000\150\000\000\000\000\000\000\000\151\000u\005\151\003\206\000\000\003\213\000{\000\000\000y\000\000\000\000\000j\000\150\000v\000\212\000v\000\151\000\000\000\213\000\000\000\000\000\000\000{\000\000\000\000\000\000\000j\000\000\000\000\000\252\000\000\000k\002\183\000j\002\183\000l\000\000\000w\000k\000w\000\000\000\000\000l\001\027\000\226\002\143\000\000\000\000\002\147\000\000\000\000\003\222\000\000\000\000\000\000\001\200\001\201\000\000\000\000\000u\000\000\000v\003\236\000\149\002\195\000\149\000u\000\000\000\000\000\000\001\200\001\201\000v\003\250\000\000\000h\000\000\000\000\002\208\000q\002\183\000\000\000\000\000v\000y\000w\000y\000\000\000\150\000j\000\150\002\183\000\151\002\148\000\151\000\000\000w\002\149\000{\000j\000{\001\202\002\183\000\000\000\000\001\203\000\000\000w\000\000\000\000\000\000\000\149\000\000\000\000\000j\000\000\001\202\000h\000\000\000j\001\203\000q\000\149\000\000\000k\000\000\000\227\000\000\000l\000\000\000\000\004\001\000y\000\149\000h\000\000\000\150\000\000\000q\000\000\000\151\000v\000\000\000y\000\000\000\000\000{\000\150\000v\000\000\000\000\000\151\000u\000\000\000y\000\000\000\000\000{\000\150\000\000\002\183\000j\000\151\000\000\000\000\000w\000k\0052\000{\000\000\000l\000\000\000w\000\000\000\000\000\000\000\000\000\210\000j\000\233\000\000\000\000\000\000\000k\000\000\000\000\000\000\000l\000\000\000\000\002\162\000\149\000\000\000h\000u\000\252\000\000\000q\000\149\002\143\001\216\000\000\002\147\000\000\002\163\000\000\000h\000\000\000\000\001\029\000q\000u\000y\000\000\001\217\001\216\000\150\000\000\000\000\000y\000\151\000j\000\000\000\150\000\212\000\000\000{\000\151\000\213\001\217\000\000\000\000\000\000\000{\000v\000\000\000\000\000j\000\000\000\000\000\000\000\000\000k\000j\000\000\000\000\000l\002\148\000\000\000\000\000j\002\149\000\000\000\182\000\226\000k\000\000\000\000\000w\000l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000h\000\000\000\000\002\195\000q\000v\000\000\000\000\000\000\000\000\000\000\001\233\000u\000\149\000\000\000h\000\000\002\210\000\000\000q\000\000\000\000\000v\000\000\000\220\002\008\001\233\000\000\000\000\000w\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\150\000\000\002\n\000\245\000\151\000\000\000j\000\000\000w\000\000\000{\000k\000\000\000\000\000\000\000l\000\000\000\149\000\000\000\000\000\000\000j\000\000\000\000\000\000\000\000\000k\000\227\000\000\000\000\000l\000\000\000\000\000\000\000\149\002\162\000\000\000\000\000y\000u\000\000\000\000\000\150\000v\000\000\000\000\000\151\000\000\000\000\002\163\000\000\000\000\000{\004M\000u\000y\000v\000\000\000\000\000\150\000h\000\000\001$\000\151\000q\000\000\000\000\000w\002\143\000{\000\000\002\147\000\000\000\000\000\000\001\170\000\251\000\000\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000h\000\000\000\000\000\149\000q\000\000\000\252\000\000\000\000\000\000\000\000\000\253\000\000\000h\000j\000\254\000\149\000q\000\000\000k\000\255\000\000\000j\000l\000y\000\000\002\148\000\000\000\150\002\195\002\149\000v\000\151\000\000\000\000\000\000\002\143\000y\000{\002\147\000\000\000\150\000\000\002\212\000j\000\151\000v\000u\000\000\000k\001\174\000{\000\000\000l\000\000\000w\000\000\000j\000\000\000h\000\000\000\000\000k\000q\000\000\001\210\000l\000\000\000\000\000h\000w\000\000\000\000\000i\000\000\000\000\000\000\000u\000\000\000\000\000j\000\149\000\000\000\000\002\148\000\000\000\000\000\000\002\149\000h\000u\000h\000\000\000q\000\000\000q\000\149\000\000\000\000\000\000\000\000\000\000\000y\000j\000\000\000\000\000\150\000h\000k\000\000\000\151\000q\000l\000j\000\000\000\000\000{\000y\000k\000\000\000\000\000\150\000l\002\162\000\000\000\151\000\000\000\000\000\000\000v\000\000\000{\000\000\000j\000\000\000j\000u\002\163\000k\000\000\000k\000\000\000l\000\000\000l\000\000\000u\000\000\002\017\002\143\000\000\000j\002\147\000w\000\000\000\000\000k\000\000\000\000\000v\000l\000\000\000\000\000\000\000\000\000\000\000u\000\000\000u\000\000\000\000\000\000\000v\000\000\000\000\000\000\000\000\000\000\002\022\000\149\000\000\002\162\000\000\000w\000u\000\000\000\000\000\000\000\000\000\000\000\000\002\026\000\000\000j\000\000\002\163\000w\002\148\000\000\000\000\000y\002\149\000\000\000\000\000\150\000\000\000\000\002\195\000\151\000\149\002\143\000h\000\000\002\147\000{\000q\000\000\000\000\000v\000\000\000\000\002\214\000\149\000\000\000\000\000\000\000\000\000h\000v\000h\000y\000q\000\000\000q\000\150\000\000\000\000\0021\000\151\000\000\000\000\000\000\000w\000y\000{\000\000\000\000\000\150\000v\000\000\000v\000\151\000w\000\000\000j\000j\000\000\000{\002\148\000\000\000k\000\000\002\149\000\000\000l\002\195\000v\002X\000\149\002\156\000\000\000j\000w\000j\000w\000\000\000k\000\000\000k\002\216\000l\000\000\000l\000\000\000\000\002\171\000\000\000h\000u\000y\000w\000i\000\000\000\150\002\162\000\000\000\000\000\151\000\149\000y\000\149\000\000\000\000\000{\000u\000h\000u\000\000\002\163\000i\000\000\000\000\000\000\000\153\000\000\002\143\000\149\000\000\002\147\000y\000\000\000y\000\000\000\150\000\000\000\150\000\000\000\151\000\000\000\151\000\000\000j\000\000\000{\000\000\000{\000k\000y\000\000\000\000\000l\000\150\000\000\000\000\000\000\000\151\000\000\000\000\000\000\000j\000\000\000{\000\000\000\000\000k\002\162\000\000\000\000\000l\000j\000\000\000\000\000\000\002\148\000u\000\000\000\000\002\149\000\000\002\163\000v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\195\000\000\000\000\000\000\000u\000\000\000\000\000\000\000v\000\000\000v\002\173\000\000\000\000\002\218\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\176\000\000\004\024\000\000\000\000\000w\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\149\000\000\000\149\002\195\000\000\000y\000\000\000\000\000\000\000\150\000v\000\000\000\000\000\151\000\000\000\000\000\000\002\220\000\000\000{\000\000\000y\000\000\000y\002\162\000\150\000\000\000\150\000v\000\151\000\000\000\151\000\000\000\000\000w\000{\000\000\000{\002\163\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\195\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\222")) + ((16, "\001.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\159\002\206\000\000\000\179\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000[\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\224\000\000\000\011\000\179\000u\000\000\000\000\000\000\000\000\000\000\012\226\000\128\006\208\000\000\000\000\000\000\004\232\000\000\0004\001!\0024\000\000\000\000\015\168\000\000\003\244\000\000\000B\013\"\018('x&\138\005\028'\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000'\012'x\000\000\000\0000$\000\0004\200\000\000\t\216\000\000\000\000\000\000\000\000\001r\000\000\"\014\000\000\000\000\000\236\000\000\n\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018T\000\000\020L\000\000\020\244\000\000\021\178\000\000\024R\000\000\026J\000\000\028B\000\000\028\212\000\000\030\204\000\000\",\000\000\007\178\000\000\011\166\000\000\000\000\000\000\000\000\000\0009\170\000\0009\176\000\000:\128\000\000\"z\000\000\000\000\"\162\000\000\000\000\000#\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004F\000Z\000\000\000\230\000\000\000\000%\176\000\0004N\000\000\000\000\000\000\001\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0006\000\000\000\000\000\000\000\000\000\000\000\000\003\254'\156\000\000\n\186\000\000\018\160\005n\000\000\000\000\000\000\002\026\000\000\"\160\000\000\000\0004n\000\000\000\000\000\000\002.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\012\000\0008 \000\000\000\000\000\000\000\000\0006\000\000\000\0004\198\000\000\000\000\000\000\tz\000\248\000\000\000\000\000\000\000\000\000\000\000\000\016&\000\000\021\232\000\000\022\188\000\000\023\224\000\000\026\128\000\000\027T\000\000\027\208\000\000\029 \000\000\029L\000\000\031\024\000\000\023h\000\000\005V\000\000\031D\000\000%\250\000\000(b\000\000\000\000\000\000\000\000\000\000\000\1314\240\000\000\000\006\000\000\000\000\000C\003@\000\000\002@\000\000\000\000\000\000\013N\000\000\000\000\000\000'\236\000\000\000\000\000\000\000\000\000\000(`\000\000\000\000\000\000\000\000\000\000\000\000\000F\000\000\000\000\000\000\0014\000\000\000\000\000\000\000\168\000\000\000\000\0004\000\179\000\000\000\000\001\023\008\208\000\000\000\000\000\000\000\000\000\000\002\164\000\000\007j\000\000\0064\000\000\000\000\003x\000\000\000\000\000\000\000\000\000\000\000\000)\\\000\000\000\000\000\000\0008\000\000\000\000\000\000\000\000\008\244\012\212\000\000\002P\000\000\000\000\004\212\003\006\000\000\000\000\000\000\000\000\014\190\000\000\000\000\000\000\000\000\000\000\000\000\001\132\003\134\000\000\005D\000\000\000\000\000\000\002*\000\000\011\152\000-\000\000.\016\000\000\000\000\000\000\000\182\002$\000\000\000\000\000\000\001\210\000\000\000\000\002\030\000\000\002j\000\000\000\000\000\000\000\000\000\"\002\170\000\000\003\"\000\000\000\000\000\000\000\000\000\000\000\0005\016\000\000)\008\000\0005:\000\000\000\000\002\194\000\000\006\172\000\000\007\252\018\204)N\000\000\000\000\000\000\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\130)N\000\000\020\028\000\000\023:\nL\000\000\000\000\000\000\003\218\000\000#\\\000\000\000\0005>\000\000\000\000\000\000\004\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008,\000\0008\180\000\000\000\000\000\000\002\164\000\000\000\000\000\000\000\000\000\000\000\000\012\180\000\000\019t\000\000\022\146\000\000\022\234\000\000\029\202\000\000 \136\000\000#\030\000\000$l\000\000(\154\000\000+\n\000\000\025`\000\000\000f\000\000+\164\000\000/\016\000\0001\206\000\000)\158\000\000\000\000\000\0005\232\000\000\000\000\000\000\000\017\000\0006\030\000\000\000\000\000\0006\"\000\000\000\000\000]\000\000\0244\000!\000\007\000\000\003\150\000\000\012\166\001\234\007B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0006h\000\000)\246&\252\004<\000\000\000\000\000\000 \030\000\000.L\000\000.z\000\000*F*\154\000V\002\176\004~\000\000\000\000\000\000\004\168\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0006\212\000\000\000\000\000\000\000\000\000\000#\238\000\000+2\000\000\000\000\000\000\000\000\000\000\000\000\013f\000\000\005\148\000\000\000\000\000\000\000\000\004\140\000\025\000\0006B\000\000\000\000\000\000\006\138\000\000\000\000\001v\003z\000\000\014X.\242\000\000\000\000+B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \208+B\000\000$\254\000\000)4\008\168+`\000\000\027\022\000\000\000\000\000\000\004\186\000\000$\128\000\000\000\0006\252\000\000\000\000\000\000\005N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0007\002\000\0007\026\000\000\000\000\000\000.\026\000\000\000\000\016D\000\000\000\000\000\000\000\000\005\160\000\000\000\000\000\000&X\000\000\000\0007\236\000\000\003l\000\000\000\000\000\000\002x\000\000\024\154\000\000\025\216\000\000\025\234\000\000 b\000\000\"\234\000\000%\144\000\000&\222\000\000-F\000\0000\018\000\0008\218\000\0009\166\000\000:^\000\000\000\000\000\000\000\000\000\000/n\000\000\013\160\000\000/|%\n\000\000/\244\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\000\000\000\000\003\160\000\000\000\0008\176\000\000\000\000\000\000.\202\000\000\000\000\003\002\000\000\000\000\000\0008\238\000\000\000\000\000\000\000\000/\220\000\000\000\000\000\000\000\000\0050\nZ\000\0000j\000\000\000\000\000\000\000\000\024\220\000&\000\000\025\132\000\000\000\000\0128\000\0000\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\226\000\000\000\0009\024\000\000\000\000\000\0000\192\000\000\000\000\004\220\000\000\000\000\013\238\000\000\026,\000\000\000\000%<\000\000\000\000\000\000\000C\000\000\000\00098\000\000\000\000\000\000\000\0000\234\000\000\000\000\000\000\000\000\t\190\0146\000\0001x\000\000\000\000\000\000\000\000\000\000\000\000\014\174\000\000\000\000\006\000\000\000\0156\000\000\000C\000\000\000\000\005^-\174\000\000\005\134\000\000\000\000\000\000\000\000\002\164\000\000,*\000\000\026\212\002D\027|\000\000\004&\000\000\015\180\000\000\016<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006d\028$\002\164\028\204\000\000\000\000\000\000\003\020\000\000\016\252\000\000\006\178\000\000\000\000\000C\005\"\029t\000\000\005\150\000\000\017\164\030\028\000\000\000\000\018L\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\184\007\246\000\000\006\216\000\000\000\000\000\000\000\000\006\208\000\000\018\244\000\000\000\000\000\000!\"7\182\000\000\000\000\000\000 \252\000\000\000\000\000\000\000\000\014\004\004\248\000\000\000\0001\154\000\000\000\000\000\000\000\000\005\006\000\000\000\0009\164\000\000\000\000\000\0001\160\000\000\000\000\000m\000\000\000\0002x\000\000\000\000\011b\006\246\000\000\000\0002~\000\000\000\000\0078!\184\000\000\0072\000\000\000\0002\150\000\000\000\000\000\000\000\000\000\000\000\000\007j\000\000\000\0009\186\000\000\000\000\000\0002\190\000\000\000\000\000\000\000\000\000\000%\206\000\000\000\000\000\000\001f\000\000\000\000\000\0003<\000\000\000\000\013\188\t\004\000\000\000\0003n\000\000\000\000\007B\000\000\000\000\000\000\000\000\002\164\001f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000d\000\000\019\156\000\000\000\000\000\0008\002\000\000\008t\000\000\000\000\000\000\0040\000\000\000\000\005:\020D\000\000\020\236\000\000\000\000\000\000\005\226\000\000!\232\006^\"\204\000\000#\204\000\000\000\000\000\000\006\220\000\000,\194\007\014-\022\000\000-6\000\000\000\000\000\000\007L\000\000'\234\007\164\000\000\000\000\005\008\0128\007\174\012\030\000\000 :\000\000\000\000\000\000\007\178\000\000,\002\007\222\000\000\000\000\000\000\003\200\000\000\000\000\000\000\004Z\000\000\000\000\000\000\004n\000\000\000\000\000\000\000\000\000\000\000^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\014\000\000\000\000\005J\000\000\002\168\000\000\000\000\007\\\000\000\006\192\005:\003J\000\000\000\000\004J\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\224\000Q\000\000\000\000\002\172\000\000\000\000\000\000\008\\\000\000\000\000\t\148\n\166\000\000\000\000\000\000\000\000\011v\012\248\002\156\000\000\015,\000\000\000\000\000\000\000\000\000\000\000\000\015\236\000\000\000\000\0150\000\000\000\000\005*\000\000\000\000\007\226\000\000\000\000\tj\000\000\007\208\006\012\003\004\000\000\000\000\008\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\022\015\134\000\000\000\000\000\000\000\000\015\190\000\000\000\000\017\004\000\000\000\000\019\n\000\000\000\000\000\000\0188\004\216\000\000\020\188\000\000\000\000\000\000\000\000\000\000\000\000\000=\000\000\008d\006\008\003\248\000\000\000\000\000\000\000\000\002d\000\000\000\000\000\000\000\000\000\000\000\000\000\007\000\000\000\000\003\150\000\000\t$\006:\007\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\000\000\000\000\021\170\020\216\000\000\000\000\000\000\000\000\0202\000\000\004n\000\000\002\196\000\000\000\000\000\000\000\000\000\000\000\000\019\138\008\140\000\000\000\000\011 \000\000\000\000\000\000\000\000\000\222\000\000\014\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\191\000\000\000\000\002z\000\000\000\000\000\000\000\000\000\000\000\000\000\0003\150\004\008\000\000\000\000\000\000\008\234\000\000\000\000\017F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000\000\000`\012\012\000\179\012J\021\164\005\150\000\000\000\000\005R\007\n\007\136\008\030\000\000\000\000\000\000\000\000\000\000\000\000\006t\021\148\000\000\030\196\007\138\000\000\000\000\007\142\000\000\022<\000\000.\156\000\000\000\000\007x\022\228\000\000\031l\000\000\008\008 \020\000\000\000\000\000\000\006>\005R\000\000\004<\000\000\000\000\000\000\001\158\000\000\016Z\000\000\005\184\013\022\000\000\000\000\000\000\000\000\002\164\000\000\003x\000\000\005\222\000\000\000\000\005\138\000\000\000\000\000\000\000\000\tB\000\000\000\000\005R\008\236\000\000\023\140\000\000\000C\006h\000\000\000\000\000\000\000\000\000\000\001\226\000\000\000\000\000\000\000\000\000\0004 \008\130\000\000\005\016\000\000\000\000\000\000\000\000\000\000\000\230\000\000\n\002\008\160\n\138\000\000\002p\011\016\000\000\t\016\000\000\002\238\000\000\003\188\000\000\004\172\000\000\000\000\000\000\000\000\000\000\008\150\000\000\005z\000\000\t(\000\000\005\248\000\000\000C\006\194\000\000\003n\000\000\006\198\006B\000\000\004\024\000\000\008\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\136\000\000\t\144\000\000\000\000\000\000\000\000\000\000\000\000\007p\000\000\000\000\006\190\000\000\000\000\007\018\008\216\008n\000\000\008t\000\000\000\000\008\014\t\218\000\000\007\248\000\000\000\000\000\000\000\000\008\174\000\000\000\000\000\000\000\000\000\000\000\000\t\140\000\000\000\000\000\000\008\174\008\162\t\006\t<\008\196\t\004\000\000\000\000\008\184\t\014\t^\008\230\t,\000\000\000\000\t`\000\000\000\000\000\000\000\000\t\250\000\000\000\000"), (16, "\001\200\001\223\000\017\004\135\004\013\002!\002\"\001?\003\007\001g\002!\002\"\004\216\005<\000>\002u\005=\000*\002m\003n\003V\004\136\004d\005!\005\"\000>\000@\001~\000C\003\007\004\214\004\217\004d\000\016\005A\001\200\001\201\004\232\000*\001%\000j\000\n\004\213\000\210\003\029\000\211\003!\000>\001\202\000\210\000j\0016\001\203\004\232\003\030\004\233\000>\000E\004\236\004d\004\214\004\217\004d\0009\001\200\001\223\000\t\001\200\001\201\000\017\005i\004\233\001+\001'\004\236\004d\005j\004P\000>\000\017\004e\000j\005k\001\202\003 \004`\005\029\001\203\000*\000j\004e\004\231\000\212\005:\0008\000j\000\213\003\157\000\212\001\228\004\018\001 \000\213\004^\001h\000*\001-\001%\004a\004d\003!\001Y\001\202\000j\001@\001\202\001\203\004e\000F\001\203\004e\000>\000\226\003\008\004\019\001S\000*\000+\000\226\002$\0009\001\200\001\223\004e\000h\000\166\000\175\002\\\000s\000F\0009\001&\000>\005\167\003C\000>\000*\001\216\002H\005k\005\168\003 \002a\004\213\005m\001\139\002b\000\163\001D\003(\000\247\001\217\003\159\003|\004k\002o\003\203\004e\000\163\001D\003)\004\214\004\217\004d\003j\005n\001i\003!\005\031\001\202\000j\001F\001\216\001\203\002J\000k\001A\003H\005\186\000l\001\162\002f\001m\004\139\004\014\003W\001\217\003v\000F\000\163\001D\002\\\003<\000h\000\227\003L\003\141\000q\003N\001\232\000\227\001\216\001T\000u\001\216\002H\002a\001p\004\016\001s\002b\000\163\001D\003(\005p\001\217\000\248\004\244\001\217\001 \001\233\004e\004\246\005q\005\139\001\234\001x\005\187\005\140\001\235\001_\003\007\001j\004\249\001\236\001\\\001B\000*\001]\000j\000\173\002K\002L\002N\000k\002f\000F\000\250\000l\0037\005\142\001\200\001\223\000>\001\152\001\222\003<\000\177\002\\\000j\005\144\001h\003N\001\232\000\232\000>\002\004\000*\001\216\002m\003n\003V\000u\002a\001+\000\163\000\164\002b\000\163\001D\003(\005\189\001\217\001@\001\233\000v\000\005\001\233\000h\001\234\005q\005\139\000q\001\235\001I\005\191\001E\003!\001\236\001\202\002\245\001\236\001\154\001\203\004\016\001\159\005\152\005\153\001-\000w\000\008\000\t\002f\000\248\000*\003p\0037\005\193\001\200\001\223\001\156\000*\002\143\003<\001(\002\147\000\173\005\195\001\133\003N\001\232\000*\000>\005\026\000j\000x\005k\005\173\003V\000k\001\150\000F\004\225\000l\002\242\001\135\003C\000n\000*\003}\001\228\001\233\001 \001=\000v\001\146\001\234\000y\004\222\005\157\001\235\001\158\000\160\003\130\003!\001\236\001\202\000u\000j\004q\001\203\000{\002\148\002\183\005s\004\138\002\149\000\186\000w\000>\005\183\001\200\001\223\001+\004\232\004\153\004d\004r\002\\\003\247\000*\004u\004d\004\136\004d\000>\000\163\000\164\001\216\005k\005\173\003V\004\233\002a\000\149\004\236\004d\002b\000\163\001D\003(\001\136\001\217\001\153\003\127\005&\005'\001,\005:\003\130\004\178\003)\001\161\002u\000F\003j\000y\003!\001\135\001\202\000\150\000\215\001%\001\203\000\151\005+\000>\003\007\004\179\000*\000{\000\224\002f\005\178\004e\001(\003W\000\173\003v\000v\004e\002\143\004e\003<\002\147\002\\\004x\003\141\000F\003N\001\232\003x\002!\002\"\004e\001\216\001\231\004\223\000\148\002\162\002a\000>\002\246\000w\002b\000\163\001D\003(\005\179\001\217\002E\001\233\005\254\002\163\001\200\001\223\001\234\005q\005\139\004\235\001\235\005\255\002d\004\027\005:\001\236\000*\002[\000>\000\149\001b\002\148\005k\005\173\003V\002\149\001q\004\233\003\132\002f\004\236\004d\000\210\003W\000\233\005\181\000*\000\210\002\\\000\231\003<\000y\000\163\000\164\003A\000\150\003N\001\232\001\216\000\151\003!\004y\001\202\002a\002F\000{\001\203\002b\000\163\001D\003(\005\179\001\217\001\163\004\221\000*\005\180\000F\001\233\000F\005q\005\139\003\008\001\234\002\195\002d\003p\001\235\000j\004\129\004\222\000\212\001\236\000j\003\135\000\213\000\212\000>\002\198\004e\000\213\001\128\002f\000\173\005\006\002\194\003W\000*\005\181\000\163\000\164\002#\002\187\003<\004{\004]\005\212\003A\000\238\003N\001\232\000\226\004i\004\029\000*\003\013\000\226\001u\002\162\002\223\002\240\002\226\000>\004^\001\200\001\223\001^\002\190\004a\004d\004\182\001\233\002\163\003\017\000\163\000\164\001\234\006\007\000>\004Z\001\235\002\\\005k\005\173\003V\001\236\000F\000*\001*\004j\000\173\001\216\002\193\002\229\002t\0057\002a\0036\000>\002\193\002b\000\163\001D\003(\005\179\001\217\004|\003\030\000>\000D\003!\000C\001\202\005q\005\139\001\205\001\203\000*\002d\004y\000\210\005o\000\233\001\130\000>\000\173\005\182\004e\002m\004\223\001t\004\207\004d\000\227\002\252\002f\004\030\000*\000\227\003W\000E\005\181\003\143\002\195\000>\0017\003<\001\214\000*\000\210\003A\000\211\003N\001\232\000>\000*\004B\002\196\0058\000\241\004\133\000\210\003s\000\211\0025\005L\000j\001\200\001\223\000\212\000\163\000\176\005\161\000\213\001\233\005\162\003\020\002!\002\"\001\234\005\219\000>\000\251\001\235\0058\005k\005\173\003V\001\236\000>\004e\000*\002G\004k\004\226\000j\000\238\002D\000\212\000\226\003\143\002\\\000\213\000\252\003\153\000\163\001D\000j\000\253\004p\000\212\001\216\000\254\003!\000\213\001\202\002a\000\255\002\249\001\203\002b\000\163\001D\003(\005\179\001\217\005\166\002\151\000\226\005\190\001\200\001\223\000*\005q\005\139\004f\004\029\003e\002d\004~\000\226\000\163\000\176\003\\\000>\005\130\002F\000F\005k\005\173\003V\000\163\001D\003\030\003\005\002f\003\019\003e\000F\003W\004%\005\181\003\146\004\168\001F\000F\003<\000\163\001D\003(\003A\003g\003N\001\232\000>\001m\003!\004'\001\202\000>\003)\000\227\001\203\005E\004\222\005:\004\184\000\163\000\176\002!\002\"\003f\005\194\000\239\001\233\003,\002i\000\163\000\164\001\234\001p\002\160\001s\001\235\002\\\004C\003\185\000\241\001\236\004\241\000\227\002t\003<\003\193\001\216\005P\003A\005G\003N\002a\001\200\001\223\000\227\002b\000\163\001D\003(\005\179\001\217\001Y\000\251\005\127\000\163\001D\000>\002u\005q\005\139\002m\003n\003V\002d\002\185\001S\004(\005z\001\132\003\168\000\173\000*\005\129\000\252\000>\000@\000A\000C\000\253\003\030\002f\001\023\000\254\004'\003W\005\150\005\181\000\255\003!\002\\\001\202\003<\005\197\003\138\001\203\003A\005\132\003N\001\232\001\216\005}\005\201\000\252\005~\002a\000\173\000E\005L\002b\000\163\001D\003(\005\179\001\217\000\228\004\228\000\255\001\200\001\223\001\233\004\178\005q\005\139\004\127\001\234\000*\002d\003\140\001\235\004/\005T\000>\003\138\001\236\003\162\002m\003n\003V\004\179\000\163\001D\002!\002\"\002f\000\163\001D\0041\003W\005\128\005\181\003\162\000>\001T\004t\003<\000*\005H\005l\003A\004\128\003N\001\232\005X\003!\005[\001\202\003\139\005\128\003\164\001\203\005L\004r\003\030\000h\003\030\004u\004d\000q\005\220\002\\\001[\000F\001\233\000*\003\163\001\\\005\224\001\234\001]\001\216\000\173\001\235\0042\003\005\002a\003\019\001\236\004\003\002b\000\163\001D\003(\004\003\001\217\004\022\003|\001Y\001\200\001\223\0041\001\200\002\014\003)\002!\002\"\0049\002d\000\163\001D\000j\001S\000>\004\171\005\229\000k\002m\003n\003V\000l\002v\001F\004\005\004;\002f\004e\000F\004\004\003W\000\145\003v\004\172\001m\004\175\004d\003<\005L\004<\002\247\003A\004\181\003N\001\232\000u\003!\002\\\001\202\000j\005O\001\202\001\203\005b\004\185\001\203\004;\001\216\000F\001p\004\179\001s\002a\001\200\001\223\001\233\002b\000\163\001D\003(\001\234\001\217\003z\003|\001\235\005\230\003\210\000>\004\135\001\236\003)\002m\003n\003V\002d\004?\000F\000\163\001D\002\143\004\186\004H\002\147\004K\004e\005\235\004\136\004d\005\234\004\232\001T\002f\0041\004\239\005\170\003W\003\219\003v\004J\003!\004J\001\202\003<\005N\004N\001\203\003A\004\233\003N\001\232\004\236\004d\000\210\000>\000\233\005g\005\239\000v\001_\004\229\001`\0041\005\141\001\\\003\229\000j\001]\002\\\000\173\002\148\001\233\000>\003\030\002\149\001n\001\234\000\148\001\216\005\184\001\235\001\216\000w\002a\0051\001\236\004e\002b\000\163\001D\003(\005\170\001\217\003\161\003|\001\217\004\230\001\200\001\223\000j\004\171\003)\000\212\005\170\000E\002d\000\213\005\244\000\149\001R\004e\000>\000*\005\212\005\159\002m\003n\003V\004\172\005M\004\175\004d\002f\001S\005\188\000\210\003W\000\233\003v\005\248\000y\002\\\000\226\003<\000\150\005\176\004\187\003A\000\151\003N\001\232\001\216\004\174\003!\000{\001\202\002a\005\192\006\015\001\203\002b\000\163\001D\003(\004\242\001\217\004\026\003|\006\016\005\236\004\172\001\233\004\175\004d\003)\004\135\001\234\002\162\002d\005\246\001\235\000j\000h\000>\000\212\001\236\000i\0058\000\213\004e\005\252\002\163\006\002\004\136\004d\002f\006\t\0058\005\212\003W\004\243\003v\005\212\001\200\001\223\006\000\003<\000\163\001D\004\142\003A\005\238\003N\001\232\000\226\003O\006\001\000>\006\003\006\004\001T\005k\006\005\003 \000\227\000\163\001D\006\008\000j\004\179\005\014\004e\000F\000k\001\233\006\n\006\011\000l\001F\001\234\001\200\001\201\006\012\001\235\002\\\006\020\000\000\000\000\001\236\003!\0052\001\202\004e\001\\\001\216\001\203\001]\005\213\000\173\002a\000\000\000u\002\165\002b\000\163\001D\003(\005\185\001\217\005\137\003|\001\200\001\223\000\251\001p\001w\001s\003)\000h\002u\003\254\002d\000s\005\249\0055\000>\000j\000\000\001\202\005k\005\248\003 \001\203\000*\000\252\000\210\000\227\000\230\002f\000\253\004\193\000\000\003W\000\254\003v\000\000\005\249\005\248\000\255\003<\005\249\000\000\004\135\003A\000\000\003N\001\232\003!\000\000\001\202\000\000\000\000\000\249\001\203\000j\000\000\000\163\000\176\000>\000k\004\136\004d\005\215\000l\000\000\005\171\005\217\001\233\001\200\001\223\002\\\000j\001\234\000v\000\212\000\251\001\235\000\000\000\213\000\000\001\216\001\236\000>\000\000\000\000\002a\005k\000u\003 \002b\000\163\001D\003(\005\172\001\217\004\148\000\252\000w\000\000\000\000\004\232\000\253\005q\005\139\000\226\000\254\000\000\005\175\000\000\000\000\000\255\005\011\000\000\000\000\003!\000\000\001\202\001\216\004\233\004e\001\203\004\236\004d\000>\002f\000\000\000\000\000\000\0037\005\177\000\000\001\217\005\174\000F\000\000\003<\001\200\001\223\002\\\003A\000\000\003N\001\232\000h\000\000\000\188\004\135\000i\001\216\005\021\000>\000\000\000\000\002a\002m\003\209\003 \002b\000\163\001D\003(\005\172\001\217\001\233\004\136\004d\000\000\000\000\001\234\000v\005q\005\139\001\235\000\000\000\000\005\175\000\000\001\236\000\000\000\000\004e\003\021\003!\000\000\001\202\000\000\000\227\000\000\001\203\000j\000\000\000\000\002f\000w\000k\000\000\0037\005\177\000l\003\025\001\218\000\163\000\164\003<\000\000\002\\\000\000\003A\000>\003N\001\232\000\000\005E\000\000\004 \001\216\000\000\000>\003\156\000x\002a\002m\000u\004e\002b\000\163\001D\003(\005\172\001\217\000\000\001\233\004\146\000\000\000\000\000\000\001\234\005q\005\139\000>\001\235\000y\005\175\005E\000\000\001\236\000z\000\000\002u\004B\005\008\000\000\000\173\001\200\001\221\000{\000\000\000\000\000\000\002f\000\000\000\000\000*\0037\005\177\000\000\000\163\000\176\000\000\000\000\003<\001\200\001\223\002\\\003A\000\000\003N\001\232\001\200\001\201\000\000\000\000\000\000\001\216\000\000\000>\000\000\000\000\002a\002m\005\017\003 \002b\000\163\001D\003(\000\000\001\217\001\233\000j\000\000\001\202\000\000\001\234\000v\001\203\003)\001\235\000>\001o\003\145\000C\001\236\000\000\000\000\000>\000\000\003!\001|\001\202\000\000\000\000\000\000\001\203\000j\000\000\001\202\002f\000w\000\000\001\203\0037\003\147\000h\000\000\000\000\004\159\000q\003<\004\135\000E\000>\003A\000\000\003N\001\232\000\000\000E\000\000\003\154\000\000\000\163\005F\003\156\000\147\000h\000\000\004\136\004d\000i\000\163\001D\003(\005R\005I\000\000\001\233\001\200\001\223\000\000\000\000\001\234\000F\003)\002k\001\235\000y\000\000\000\000\000j\001\236\000>\000\163\005F\000k\002m\003\027\003 \000l\000\000\000{\000\000\000\000\000\000\005Q\005I\002\143\005y\004E\002\147\001\216\000j\000\000\000\000\000\000\003<\000k\000\000\002\\\003A\000l\003N\000u\003!\001\217\001\202\004e\000\000\001\216\001\203\003\"\000\000\000\000\002a\000>\001\216\000\000\002b\000\163\001D\003(\000\000\001\217\0011\000u\001\200\001\223\000\000\003&\001\217\000\000\003)\002[\0039\000\000\003\145\002\148\000\000\000\000\000>\002\149\000\163\001D\002m\003:\003V\003\253\000\000\000\163\001D\000>\000\000\002f\000\000\001F\000\000\0037\003\147\004\232\000\000\000\000\001F\000\000\003<\000\000\001m\000\000\003A\000\000\003N\001\232\003!\000\000\001\202\000\163\001D\004\233\001\203\002\143\004\236\004d\002\169\003\184\000\000\000v\000\000\000\000\005z\000\000\000\000\001p\001\233\001s\002u\002\\\000\000\001\234\001p\001\233\001s\001\235\000\000\000\000\001\"\001\216\001\236\000v\000*\000w\002a\000\000\000\000\001\238\002b\000\163\001D\003(\002\187\001\217\004\157\005}\001\200\001\223\005~\000j\000\173\000\000\003)\002\148\003Y\000w\003[\002\149\002\162\000\149\000>\002\230\000\000\004e\002m\003:\003V\002\190\000>\000@\001z\000C\002\163\002f\000\000\000\000\000\000\0037\003]\000\000\000\000\000y\000\163\000\176\003<\000\150\000\000\002\\\003_\000\151\003N\001\232\003!\002\232\001\202\000{\000\000\001\216\001\203\002\193\000E\000\000\002a\0010\000\000\000\000\002b\000\163\001D\003(\000\000\001\217\001\233\000\000\001\200\001\223\000\000\001\234\000\163\001D\003)\001\235\003^\000\000\002d\000>\001\236\000\000\000>\000\000\000\000\003\190\002m\003:\003V\000\000\004\135\002\238\000\000\000\000\000\000\002f\000F\002\195\004\165\003W\000\000\003X\000\000\000\000\002\162\000\000\003<\000\000\004\136\004d\003A\002\196\003N\001\232\003!\000\000\001\202\000\000\002\163\000\000\001\203\003\202\000\000\003\208\000\000\000h\000\000\005\024\000\000\001<\000\000\001\200\001\223\000\000\001\233\004\135\000\000\002\\\000\000\001\234\000\000\000\000\000\000\001\235\003P\000>\000\000\001\216\001\236\002m\003n\003V\002a\004\136\004d\000\000\002b\000\163\001D\003(\000\000\001\217\003T\004\135\000\000\000\163\001D\004e\000\000\000\000\003)\000j\000\000\000>\002d\000\000\000k\003!\001F\001\202\000l\004\136\004d\001\203\000\000\000\000\000\000\000\000\000\210\001m\000\211\002f\004\162\000\000\000\000\003W\000\000\003X\000\000\001\200\001\223\000\000\003<\000h\000u\002\\\003A\000q\003N\001\232\000\000\000\000\004e\000>\001p\001\216\001s\002m\003n\003V\002a\000\000\000\163\000\164\002b\000\163\001D\003(\000>\001\217\001\233\000\000\000\000\000\000\000j\001\234\000\000\000\212\003)\001\235\004e\000\213\002d\000\000\001\236\003!\000\000\001\202\000\000\000j\000\000\001\203\000\000\000\000\000k\000\000\000\000\000\000\000l\002f\000\000\000\000\000\000\003W\000\000\003X\000\000\000\226\002\\\000\000\003<\004\163\000\000\000\173\003A\000\000\003N\001\232\001\216\000\000\004\155\000\000\000u\002a\005\130\000\000\000v\002b\000\163\001D\003(\000\000\001\217\000\000\003u\001\200\001\223\000\000\001\233\000\000\000\000\003)\000\000\001\234\000\000\002d\000\000\001\235\000\000\000>\000w\000\000\001\236\002m\003n\003V\000\163\000\164\000\000\000\000\000\000\000\000\002f\000\000\004\171\004\191\003W\000\000\003v\000\000\000\000\000\000\000\210\003<\000\233\000\000\002\\\003A\000\000\003N\001\232\003!\004\172\001\202\004\175\004d\001\216\001\203\000\000\000\227\000\000\002a\000\000\004\196\002\181\002b\000\163\001D\003(\000\000\001\217\001\233\003w\0054\000v\004\163\001\234\000\173\000\000\003)\001\235\000\163\001D\002d\000\000\001\236\000\000\000\000\000j\001\200\001\223\000\212\004\166\002\183\005z\000\213\000\000\000\000\000w\000\000\002f\000\000\000\000\000>\003W\000\000\003v\002m\003\148\003V\000\000\003<\000\000\004e\000\000\003A\000\000\003N\001\232\000\000\000\000\000\226\000\000\005\133\000\149\005\134\000\000\005}\000\000\000\252\005~\000\000\000\173\000\000\000\000\003!\000\000\001\202\000\000\001\233\000\000\001\203\002\\\001\001\001\234\000\000\000y\000\000\001\235\000\000\000\150\000\000\001\216\001\236\000\151\000h\000\000\002a\000\000\000q\000{\002b\000\163\001D\003(\000\000\001\217\000\000\003\137\003\150\000\000\000\000\000\000\001\200\001\223\003)\000\000\000h\000\000\002d\000\000\000i\000\000\000\000\000\000\000\000\000\000\000>\000\000\000\000\004\135\002m\003\148\003V\000\000\000\000\002f\000\000\000\000\000\000\003W\000j\003v\000\227\000\000\000\000\000k\003<\004\136\004d\000l\003A\000\000\003N\001\232\000\210\000\000\000\229\000\000\003!\000\000\001\202\000\000\000j\004\199\001\203\002\\\000\000\000k\0052\000\000\000\000\000l\000\000\000u\001\233\001\216\001\200\001\223\000\000\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\251\003\152\000\000\001\030\000u\001\200\001\223\003)\000\000\000j\000\000\002d\000\212\003\170\000\000\004e\000\213\000\000\000\000\000>\000\000\000\252\000\000\002m\003:\003V\000\253\000\000\002f\000\000\000\254\000j\003W\001\202\003\151\000\255\000\000\001\203\000\000\003<\000\000\004\171\000\226\003A\000\000\003N\001\232\000\000\000\000\000\000\000\000\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\004\172\000\000\004\175\004d\000\000\000v\000\000\000\000\001\233\001\216\001\200\001\201\000\000\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\001\"\001\228\000\000\000v\000\000\000w\001\200\001\223\003)\000\000\000\000\000>\002d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000>\004\232\000\000\000\000\002m\000\000\003 \000w\000\000\002f\000\000\000\149\000j\003W\001\202\003\151\000\000\004e\001\203\004\233\003<\000\227\004\236\004d\003A\004\211\003N\001\232\000\000\001\216\000\000\000\000\003!\000y\001\202\000\000\000\000\000\150\001\203\002\\\000\000\000\151\000\000\001\217\000\000\000\000\000\000\000{\001\233\001\216\001\200\001\220\005\013\001\234\002a\000y\001\230\001\235\002b\000\163\001D\003(\001\236\001\217\004\020\000\000\000\000\000\000\003\156\000}\001\200\001\223\003)\000\000\000h\000>\002d\000\000\000i\000\000\000\000\004e\005\016\000\000\000>\004\232\000\000\000\000\002m\000\000\003 \001\232\000\000\002f\000\000\000\000\000j\003W\001\202\003X\000\000\000\000\001\203\004\233\003<\000\000\004\236\004d\003A\000\000\003N\001\232\001\233\001\216\000\000\000\000\003!\001\234\001\202\000\000\000j\001\235\001\203\002\\\000\000\000k\001\236\001\217\004\202\000l\000\000\000\000\001\233\001\216\000\163\000\164\000\000\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\004\"\000\000\000\000\000\000\003\156\000u\001\200\001\223\003)\004\135\000h\000\000\003\145\000\000\000i\000\000\000\000\004e\005\005\000\000\000>\000\000\000\000\004\135\002m\000\000\003 \004\136\004d\002f\000\000\000\000\000\000\0037\003\147\005\008\000\000\000\173\000\000\000\000\003<\004\136\004d\005\019\003A\000\000\003N\001\232\001\233\001\216\000\000\000\000\003!\000\000\001\202\000\000\000j\000\000\001\203\002\\\000\000\000k\001\240\001\217\000\000\000l\000\000\000\000\001\233\001\216\000\163\000\164\000\000\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\004$\000\000\004e\000v\003\156\000u\001\200\001\223\003)\000\000\000\000\000\000\003\145\000\000\000\000\000\000\004e\000\000\000\000\000\000\000>\000h\000\000\000\000\002m\000i\003 \000w\000>\002f\000\000\000\000\005E\0037\003\147\005\008\000\000\000\173\000\000\000\000\003<\000\000\004\171\005\t\003A\000\000\003N\001\232\000\210\000\000\000\211\000\000\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\004\172\000\000\004\175\004d\000\000\000\000\000\000\000j\001\233\001\216\000\000\000\000\000k\001\234\002a\000y\000l\001\235\002b\000\163\001D\003(\001\236\001\217\005U\000\000\000\000\000v\003\156\000\127\001\200\001\223\003)\000\000\000j\000\000\003\145\000\212\005]\000\000\000u\000\213\000\000\000\000\000>\000\000\000\000\000\000\002m\003:\003V\000w\000\000\002f\000\000\004\209\000\000\0037\003\147\000\000\000\000\004e\000\000\000\000\003<\000\000\000\000\000\226\003A\004\253\003N\001\232\000\000\001\200\001\201\000\000\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\233\001\216\000\210\000\000\000\211\001\234\002a\000y\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\000\163\005F\000\129\001\200\001\223\003)\001\200\001\201\000j\003\145\001\202\000v\005H\005I\001\203\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \000\000\000\000\002f\000\000\000\000\000j\0037\003\147\000\212\000\000\000\000\000w\000\213\003<\000\227\000\000\000\000\003A\000\000\003N\001\232\000\000\001\200\001\219\000\000\003!\000\000\001\202\000j\000\000\001\202\001\203\002\\\000\000\001\203\000\000\000\000\004\255\000\226\000\000\000\000\001\233\001\216\000\000\000\000\000h\001\234\002a\000\000\000q\001\235\002b\000\163\001D\003(\001\236\001\217\005c\000\000\000y\000\000\003\156\000\000\001\200\001\223\003)\000\000\000\000\000j\002d\001\202\005\143\000\000\000\131\001\203\000\000\000\000\000>\000\000\000\000\000\000\002m\003:\003V\000\252\001\216\002f\000\000\000\000\000\000\003W\000j\003X\000\000\000\000\000\000\000k\003<\001\003\001\217\000l\003A\000\000\003N\001\232\000\210\000\000\000\211\000\000\003!\001\021\001\202\000\000\000\000\000\000\001\203\002\\\000\000\000\000\000\000\000\227\000\000\000\000\000\000\000u\001\233\001\216\000\000\000\000\001\216\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\001\217\000\000\000\000\003\165\001\200\001\223\003)\000\000\000j\000\000\003\145\000\212\000\000\000\000\000\000\000\213\000\000\000\000\000>\000h\000\000\000\000\002m\000i\003V\001\233\001\216\002f\000\000\000\000\000\000\0037\003\147\000\000\000\000\000\000\000\000\000\000\003<\001\242\001\217\000\226\003A\000\000\003N\001\232\000\000\000\252\000\000\000\000\003!\000\000\001\202\000\000\000\000\002\143\001\203\002\\\002\147\000\000\000\000\001\005\000\000\000v\000\000\000j\001\233\001\216\000\000\001\233\000k\001\234\002a\000\000\000l\001\235\002b\000\163\001D\003(\001\236\001\217\000\148\001\244\000\000\000\000\000\000\000w\001\200\001\223\003)\000\000\000\000\000\000\002d\000\000\000\000\000\000\000u\003Z\000\000\000j\000>\000\000\000\000\002\148\002m\000\000\003 \002\149\000\000\002f\000\000\000\149\000\000\003W\000\000\003X\000\000\000\000\000\000\000\000\003<\000\227\000\000\000\000\003A\000\000\003N\001\232\000\000\000\000\000\000\000\000\003!\000y\001\202\000\000\000\000\000\150\001\203\002\\\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000{\001\233\001\216\000\000\000\000\000h\001\234\002a\000\000\000q\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\000\000\000\000\000\000\001\200\001\223\003)\000\000\000\000\000\000\003\167\000\000\000v\000\000\000\000\003\031\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \000\252\000\000\002f\000\000\000\000\000\000\003W\000j\003\169\002\162\000\000\000w\000k\003<\001\007\000\000\000l\003A\000\000\003N\001\232\002\143\000\000\002\163\002\147\003!\002\002\001\202\000\000\000\000\002\143\001\203\002\\\002\147\000\000\000\000\000\000\000\000\000\000\000\000\000u\001\233\001\216\000\000\000\000\000\000\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000y\000\000\000\000\000\000\001\200\001\223\003)\000\000\000j\000\000\0035\000\000\002\148\000\000\000\133\003;\002\149\000j\000>\000h\000\000\002\148\002m\000i\003 \002\149\000\000\002f\000\000\000\000\000\000\0037\0038\000\000\000\000\002\195\000\000\000\000\003<\000\000\000\000\000\000\003A\000\000\003N\001\232\000\210\000\000\000\211\002\200\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\000\000\000\000\000\000\000\000\000\000\000v\000\000\000j\001\233\001\216\000\000\000\000\000k\001\234\002a\000\000\000l\001\235\002b\000\163\001D\003(\001\236\001\217\000\148\000\000\000\000\000\000\000\000\000w\001\200\001\223\003)\000\000\000j\000\000\0035\000\212\000\000\000\000\000u\000\213\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \002\162\000\000\002f\000\000\000\149\000\000\0037\0038\000\000\002\162\000\000\000\000\002\143\003<\002\163\002\147\000\226\003A\000\000\003N\001\232\000\000\000\000\002\163\000\000\003!\000y\001\202\000\000\000\000\000\150\001\203\002\\\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000{\001\233\001\216\000\210\000\000\000\211\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000j\000\000\000\000\000\000\002\148\001\200\001\223\003)\002\149\000\000\000\000\0035\000\000\000v\000\000\000\000\000\000\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \000\000\002\195\002f\000\000\000\000\000j\0037\0038\000\212\000\000\002\195\000w\000\213\003<\000\227\002\202\000\000\003A\000\000\003N\001\232\000\210\000\000\000\211\002\204\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\000\000\000\000\000\000\000\000\000\000\000\226\000\000\000\000\001\233\001\216\000\000\000\000\000\000\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000y\000\000\000\000\003y\001\200\001\223\003)\000\000\000j\000\000\003r\000\212\000\000\000\000\000\135\000\213\002\162\000\000\000>\000h\000\000\000\000\002m\000i\003 \000\252\000\000\002f\000\000\000\000\002\163\0037\003t\000\000\000\000\000\000\000\000\000\000\003<\001\t\000\000\000\226\003A\000\000\003N\001\232\000\000\000\000\000\000\000\000\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\000\000\000\000\000\000\000\227\000\000\000\000\000\000\000j\001\233\001\216\000\000\000\000\000k\001\234\002a\000\000\000l\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\000\000\000\000\003q\001\200\001\223\003)\000\000\000h\000\000\003r\000\000\000i\000\000\000u\000\000\000\000\002\164\000>\000\000\000\000\000\000\002m\000\000\003 \000\000\000\000\002f\000\000\000\000\000\000\0037\003t\000\000\000\000\000\000\000\000\000\000\003<\000\227\000\000\000\000\003A\000\000\003N\001\232\000\210\000\252\000\211\000\000\003!\000\000\001\202\000\000\000j\000\000\001\203\002\\\000\000\000k\000\000\001\011\000\000\000l\000\000\000\000\001\233\001\216\000\210\000\000\000\211\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\000\000\003\133\000u\001\200\001\223\003)\000\000\000j\000\000\003\134\000\212\000v\000\000\000\000\000\213\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \000\252\000\000\002f\000\000\000\000\000j\0037\003\136\000\212\000\000\000\000\000w\000\213\003<\001\013\000\000\000\226\003A\000\000\003N\001\232\000\000\001\200\001\201\000\000\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\000\000\000\000\000\000\000\000\000\000\000\226\000\000\000\000\001\233\001\216\000\000\000\000\000\000\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000y\000v\003\144\003\131\001\200\001\223\003)\000\000\000\000\000j\003r\001\202\000\000\000\000\000\137\001\203\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \000w\000\000\002f\000\000\000\000\000\000\0037\003t\000\000\000\000\000\000\000\000\000\000\003<\000\227\000\000\000\000\003A\000\000\003N\001\232\000\000\000\000\000\000\000\000\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\000\000\000\000\000\000\000\227\000\000\000\000\000\000\000\000\001\233\001\216\000\000\000\000\000\000\001\234\002a\000y\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\000\000\003\149\000\139\001\200\001\223\003)\000\000\000h\000\000\003\145\000\000\000i\000\000\005Y\000\000\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \000\252\001\216\002f\000\000\000\000\000\000\0037\003\147\000\000\000\000\000\000\000\000\000\000\003<\001\015\001\217\000\000\003A\000\000\003N\001\232\000\210\000\252\000\211\000\000\003!\000\000\001\202\000\000\000j\000\000\001\203\002\\\000\000\000k\000\000\001\017\000\000\000l\000\000\000\000\001\233\001\216\000\210\000\000\000\211\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\000\000\000\000\000u\001\200\001\223\003)\000\000\000j\000\000\003\145\000\212\000\000\000\000\005e\000\213\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \001\233\000\000\002f\000\000\000\000\000j\0037\003\147\000\212\000\000\000\000\000\000\000\213\003<\001\246\000\000\000\226\003A\000\000\003N\001\232\000\000\000\000\000\000\000\000\003!\000\000\001\202\000\000\000\000\000\000\001\203\002\\\000\000\000\000\000\000\000\000\000\000\000\226\000\000\000\000\001\233\001\216\000\000\000\000\000\000\001\234\002a\000\000\000\000\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\000v\000\000\000\000\001\200\001\223\003)\000\000\000\000\000h\005Z\000\000\000\000\000q\005h\000\000\000\000\000\000\000>\000\000\000\000\000\000\002m\000\000\003 \000w\000\000\002f\000\000\000\000\000\000\0037\005\\\000\000\000\000\000\000\000\000\000>\003<\000\227\000\000\002m\003A\002\143\003N\001\232\002\147\000\000\000\000\000\000\003!\000\000\001\202\000\000\000\000\000j\001\203\002\\\000\000\000\000\000k\000\227\001\200\001\201\000l\000\000\001\233\001\216\000\000\004B\000\000\001\234\002a\000y\0029\001\235\002b\000\163\001D\003(\001\236\001\217\000\000\000\000\000\000\000\000\000\000\000\141\000u\000j\003)\000\000\000\000\002\148\005Z\000\000\000\000\002\149\002\143\000\000\000\000\002\168\000\000\000\000\000\000\000\000\000\000\000\000\000j\000\252\001\202\002f\000\000\000\000\001\203\0037\005\\\000\000\000\000\000\000\001\200\001\223\003<\001\019\000\000\000\000\003A\000\000\003N\001\232\000\000\000\252\000\000\000\000\000>\000\000\000\000\000\000\003\183\001\200\001\223\002\\\000\000\000\000\000j\001\025\000\000\000\000\002\148\000\000\001\233\001\216\002\149\000>\000\000\001\234\002a\003\183\003\215\001\235\002b\000\163\001D\003(\001\236\001\217\003\218\000\000\001\202\000\000\000v\000\000\001\203\000\000\003)\000\000\000\000\004\n\005Z\000\000\000\163\001D\003(\000\000\000\000\003\218\000\000\001\202\003\224\000\148\002\162\001\203\000\000\003)\000w\002f\000\000\000\000\000\000\0037\005\\\000\000\000\000\000\000\002\163\000\000\003<\003\224\000\000\001\216\003A\000\000\003N\001\232\001\200\001\223\004\006\000\000\004G\001\228\000\149\001 \000\000\001\217\000\000\003<\000\000\000\000\000>\003A\000\000\003N\003\183\000\000\001\233\000\000\000\000\000\000\000\210\001\234\000\233\000\000\000y\001\235\000\000\002\162\000\150\000\000\001\236\000\000\000\151\000\000\003\217\000\000\000\000\000\000\000{\000h\000\000\002\163\003\218\000q\001\202\000\000\000\000\000\000\001\203\001\216\000\000\000\000\000\000\000>\000h\000\000\000\000\002\195\000i\000\163\001D\003\225\000\000\001\217\003\224\000\000\000j\000\000\001\216\000\212\000\000\002\206\003\226\000\213\001\233\000\000\004\008\000\000\000\163\001D\003\225\000\000\001\217\000\000\000\000\000j\000\000\000\000\001\248\000\000\000k\003\226\000\000\000h\000l\003\238\000\000\000s\000\000\000\226\000j\000\000\000\000\000\000\003\240\000k\000\000\000\000\004\t\000l\003\252\001\232\000h\000h\000\000\000\000\000q\000s\000u\000\000\000\000\000\000\000\000\003\240\000\000\000\000\000>\003\245\000\000\003\252\001\232\000\000\001\233\000u\000\210\000\000\000\233\001\234\000\000\000j\000\000\001\235\000\000\001\216\000k\000\000\001\236\000\000\000l\002\143\000\000\001\233\002\147\000\163\001D\003\225\001\234\001\217\000j\000j\001\235\000\000\000\000\000k\000k\001\236\003\226\000l\000l\000\000\003\238\000\000\000u\000\000\000\000\001\200\001\201\000\000\000\000\000\000\000j\000\227\000\000\000\212\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000u\000u\000\000\000\000\000j\000\163\000\164\003\240\002\148\000v\000\000\003\245\002\149\003\252\001\232\000h\004*\000\000\000\000\000q\000\000\000\000\000\226\000\000\000v\000\167\000\168\000\170\000\171\000>\000j\000\000\001\202\000w\000\000\001\233\001\203\000\000\000\000\000\251\001\234\000\000\000\000\000\000\001\235\000\000\000\000\000\000\000w\001\236\000\000\000\000\000\000\000\000\000\172\000\000\000\173\000\000\000\000\000\149\000\252\000j\000\000\000v\000\000\000\253\000k\000\000\000\000\000\254\000l\000\210\000\000\000\233\000\255\000\000\000\000\000\000\000\163\000\164\000\000\000y\000v\000v\000\000\000\150\000\000\000w\000h\000\151\000\000\000\000\000q\000\000\000u\000{\000y\000\178\000\167\000\217\000\170\000\171\000>\000\000\000\227\002\162\000w\000w\000\000\000\000\000\143\000\000\000\000\000x\000\000\000\000\000\000\000j\000\000\002\163\000\212\000\000\000\000\000\000\000\213\000\000\000\000\000\172\000\000\000\173\004,\001\216\000\149\000x\000j\000y\000\000\000\000\000\000\000k\000\159\000\000\000\000\000l\000\000\001\217\000\000\000\000\000\000\000{\000\226\001\200\001\201\000\251\000y\000y\000\000\000\000\000\150\000\000\000\162\000h\000\151\000\000\000\000\000q\000\000\000u\000{\000{\000\178\000\000\000\163\000\164\000\252\000>\000v\000\000\000\000\000\253\000\000\000\000\000\000\000\254\000\000\000\000\000\000\000\000\000\255\000\000\002\195\000\000\000\167\001\207\000\170\000\171\000\000\000j\000\000\001\202\000w\000\000\000\000\001\203\002\208\000\000\000\000\000j\000\000\000\000\000\000\000\000\000k\000\000\001\233\000\000\000l\000\000\000\000\000\000\000\000\000\172\000\000\000\173\002\143\000\000\000\149\002\167\001\250\000\000\002\143\000\000\000\227\002\147\000\000\000\000\000\000\000\000\000\000\000\000\000u\000\000\000\000\000\000\000\000\000\163\000\164\000\000\000y\000v\000\000\000\000\000\150\000\000\000\000\000h\000\151\000\000\004.\000q\000\000\000\000\000{\000\000\000\178\000\167\002^\000\170\000\171\000>\000j\000\000\000\000\000w\002\148\000\000\002[\000\000\002\149\000\000\002\148\000\251\000\000\000\000\002\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\172\000\000\000\173\002\143\001\216\000\149\002\147\000j\000\252\000\000\000\000\000\000\000k\000\253\000\000\000\000\000l\000\254\001\217\000h\000\000\000\000\000\255\000q\000\163\000\164\000\000\000y\000v\000\000\000\000\000\150\000\000\000>\000h\000\151\000\000\000\000\000q\000\000\000u\000{\000\000\000\178\000\167\002\153\000\170\000\171\000>\000j\000\000\000\000\000w\002\148\000\000\000\000\000\210\002\149\000\211\000\000\000\000\000\000\000\000\000\000\000\000\000j\000\000\002\187\000\000\000\000\000k\000\000\000\000\000\172\000l\000\173\000\000\002\162\000\149\000\000\000j\000\000\000\000\002\162\000\000\000k\002\233\001\233\000\000\000l\000\000\002\163\002\190\000\000\000\000\000\000\000\000\002\163\000u\000\000\000y\001\252\000j\002\143\000\150\000\212\002\147\000\000\000\151\000\213\000\000\000\000\000\000\000u\000{\000\000\000\178\000\000\000\163\000\164\000\000\000\000\000v\000\000\002\193\000\000\000\000\000\000\000h\000\000\000\000\000\000\000q\000\000\000\000\000\226\000\000\000\000\000\167\003>\000\170\000\171\000>\000\000\000\000\000\000\000w\000\000\000\000\002[\002\162\000\000\000\000\002\148\000\000\000\000\000\000\002\149\000\000\000\000\000\000\002\236\000\000\000\000\002\163\000\000\000\000\000\172\002\195\000\173\002\143\000\000\000\149\002\147\000j\000\000\000\163\000\164\000\000\000k\000v\000\000\002\196\000l\000\000\001\200\001\223\000\000\000\000\000\000\000\000\000\163\000\164\000h\000y\000v\000\180\000\193\000\150\000\171\000\000\000\000\000\151\000\000\000w\003b\000\000\000u\000{\000\000\000\178\000\167\003\242\000\170\000\171\000\000\000j\000\227\000\000\000w\002\148\000\000\000\000\000\000\002\149\000\172\000\000\000\173\001\030\001 \000\149\002[\000\000\001\202\002\187\002\195\000\000\001\203\000\000\000j\000\172\000\000\000\173\000\000\000k\000\149\000\000\000h\000l\002\210\002\162\000q\000y\002\189\000\000\000\000\000\150\000\000\000\000\002\190\000\151\000>\000\000\000\000\002\163\000h\000{\000y\000\178\000q\000\000\000\150\000u\000\000\000\000\000\151\000\000\000\000\000\000\000>\003h\000{\000\000\000\178\001\228\000\163\000\164\000\252\000\000\000v\000\000\002\193\000\000\000j\000\000\000\000\000\000\000\000\000k\000\000\000\000\001\027\000l\000\000\000\210\000h\000\233\000\000\001\"\000q\000\000\000j\000\000\000w\000\000\000\000\000k\002\162\000\000\000>\000l\000\000\002\\\000\000\000\000\000\000\000u\000\000\000\000\000\000\000\000\002\163\001\216\000\000\001(\002\195\000\173\002a\000\000\000\149\000\000\002b\000\000\000\000\000u\000\000\001\217\000\000\000\000\002\196\000j\000j\000\000\000\212\000v\000\000\000k\000\213\000\000\003j\000l\000y\000\000\000h\000\210\000\150\000\211\000q\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000{\002f\000>\000w\000\000\000\000\000\000\000\000\000\226\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\200\001\201\001\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\195\000\000\000\163\000\164\000\000\000\000\000v\000j\000j\000\000\000\000\000\212\000k\001\233\002\212\000\213\000l\000\000\001\234\000\000\000\163\000\164\001\235\000\000\000v\000\191\000\000\001\236\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000j\000\000\001\202\000\000\000u\000\226\001\203\000\194\000\000\001\200\001\223\000\000\000w\000\000\000\000\001.\000\000\000\173\000\000\000\000\000\149\000\000\000\000\000\000\000\163\000\164\000\000\000\227\000v\002T\004\031\002\143\000\000\000\196\002\166\000\173\000\000\000\000\000\149\000\000\000\000\000\000\000y\000\000\000h\000\000\000\150\000\194\000q\000\000\000\151\000\000\000w\004>\000\000\002[\000{\001\202\000>\000\000\000y\001\203\000\000\000\000\000\150\000>\000\000\000\000\000\151\000\000\000\000\000\000\000\000\0014\000{\000\173\000\251\000j\000\149\000\000\000\000\002\148\000\163\000\164\000h\002\149\000v\000\227\000q\000\000\000j\000\000\000\000\000\000\000\000\000k\000\000\000\252\000>\000l\000y\001\216\000\253\000\000\000\150\000\191\000\254\000\000\000\151\000\000\000w\000\255\000\000\000\000\000{\001\217\000\000\000\000\000\000\000\000\001Y\000\000\000\000\000u\000\000\000\000\000\000\000\000\001\200\001\223\000j\001:\000\000\000\173\001S\000k\000\149\000\000\000\000\000l\000\000\000\000\000\000\000\000\000\000\000\000\002\\\000\000\002T\003k\000\000\000\000\000\000\000\000\000\000\000\000\001\216\000\252\000y\000\000\000\000\002a\000\150\000u\000\000\002b\000\151\000\000\001\200\001\223\001\217\001\029\000{\000\000\002[\000\000\001\202\000\000\002\162\000\000\001\203\000\000\000\000\002d\001\233\000\000\000\000\000\000\002T\003a\000\000\000\000\002\163\000\000\000\000\000\000\000\000\000\000\001\254\000\000\002f\000\163\000\164\000\000\000\000\000v\000\000\000\000\000\163\001D\001\200\001\223\000\000\000\000\002[\000\000\001\202\000\000\001\232\000\000\001\203\001T\000\000\000\000\001\183\000\000\000\000\000\000\000\000\000w\002T\002U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\233\000\000\000\163\000\164\000\000\001\234\000v\000\000\000\000\001\235\001_\001\185\001e\000\173\001\236\001\\\000\149\002[\001]\001\202\000\173\000\000\000\000\001\203\000\000\001\183\002\\\001\200\001\201\000\000\000w\000\000\000\000\000\000\000\000\000\000\001\216\000\000\000y\000\000\000\000\002a\000\150\000\000\000\000\002b\000\151\001\200\001\223\000\000\001\217\002\012\000{\000\173\000\000\000h\000\149\000\000\000\000\000q\000\000\000\000\000\000\002d\000\000\000\000\002\\\002T\002`\000>\000h\000\000\000\000\000j\000q\001\202\001\216\000\000\000y\001\203\002f\002a\000\150\000\000\000>\002b\000\151\000\000\000\000\000\000\001\217\000\000\000{\002[\000\000\001\202\000\000\000\000\001\232\001\203\000\000\000j\000\000\002d\001\200\001\201\000k\000\000\002\\\000\000\000l\000\000\000\000\000\000\000\000\000\000\000j\000\000\001\216\001\233\002f\000k\000\000\002a\001\234\000l\000\000\002b\001\235\000\000\000\000\000\000\001\217\001\236\000u\000\000\000\000\000\000\001\232\000\000\000\000\000\000\000\000\000\000\000\000\002d\000\000\000\000\000\000\000u\000j\000\210\001\202\000\233\000\000\000\000\001\203\000\000\000\000\001\233\000\000\000\000\002f\000\000\001\234\000\000\000\000\000\000\001\235\000\000\000\000\001\200\001\223\001\236\001\216\000\000\000\000\000\000\000\000\000\000\001\232\000\000\000\000\000\000\002\\\000\000\000\000\000\000\001\217\000\000\000\000\002T\003m\000\000\001\216\000\000\000\000\000j\000\000\002a\000\212\001\233\000\000\002b\000\213\000\000\001\234\000\000\001\217\000\000\001\235\000\000\000\163\000\164\000\000\001\236\000v\002[\000\000\001\202\000\000\002d\000\000\001\203\000\000\000\000\000\000\000\163\000\164\000\000\000\226\000v\000\000\000\000\000\000\002\127\000\000\000\000\002f\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\001\200\001\223\000\000\002\127\001\216\000\000\000\000\000\000\000w\001\232\001\233\000\000\000\000\000\000\002\129\000\000\000\173\000\000\001\217\000\149\002T\0044\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\145\001\233\000\173\000\000\000\000\000\149\001\234\000\000\000\000\000\000\001\235\000\000\000y\001\200\001\223\001\236\000\150\002[\000\000\001\202\000\151\000\000\000\000\001\203\000\000\000\000\000{\000y\000\000\001\200\001\223\000\150\002\\\002T\0046\000\151\000\227\002\143\000\000\000\000\002\147\000{\001\216\000\000\000\000\000\000\000\000\002a\000\000\002T\0048\002b\000\000\000\000\000\000\000\000\001\217\000\000\001\233\002[\000\000\001\202\004M\000\000\000\000\001\203\000\000\000\000\000\000\002d\000\000\000\000\002\006\000\000\000\000\002[\000\000\001\202\000\000\000\000\000\000\001\203\000\000\000j\000\000\000\251\002f\002\148\000\000\001\200\001\223\002\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\232\000\000\000\252\000\000\002\\\003d\000\000\000\253\000\000\000\000\000\000\000\254\000\000\000\000\001\216\000\000\000\255\000\000\000\000\002a\000\000\001\233\000\000\002b\000\000\000\000\001\234\000\000\001\217\000\000\001\235\002[\000\000\001\202\000\000\001\236\000\000\001\203\000\000\002\143\000\000\002d\002\147\000\000\000\000\000\000\002\\\000\000\000>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\216\000\000\002f\000\000\000\000\002a\002\\\000\000\000h\002b\000\000\000\000\000q\000\000\001\217\000\000\001\216\000\000\000\000\000\000\001\232\002a\000\000\000\000\002\162\002b\000\000\002d\000\000\002[\001\217\000h\000\000\002\148\000\000\000q\000\000\002\149\002\163\000\000\000\000\001\233\000\000\002d\002f\000\000\001\234\001Y\002\143\000\000\001\235\002\147\000\000\000\000\000j\001\236\000\000\000\000\000\000\000k\002f\001S\001\232\000l\000\000\000\000\002\\\000\000\000\000\000\000\000\000\000h\000\000\002;\000\000\000q\001\216\000j\001\232\000\000\000\000\002a\000k\001\233\000\000\002b\000l\000u\001\234\000\000\001\217\000h\001\235\000\000\002[\000q\002=\001\236\002\148\001\233\000\000\000\000\002\149\002d\001\234\000\000\001\200\001\201\001\235\002\195\000u\000\000\000\000\001\236\002\187\000\000\000\000\000j\000\000\000\000\002f\000\000\000k\002\214\000\000\000\000\000l\000\000\000\000\000\000\002\162\002\223\002\224\002\226\000\000\000\163\001D\000j\001\232\002\190\000\000\000\000\000k\000\000\002\163\000\000\000l\000\000\001T\000\000\000u\000\000\000j\002\143\001\202\000\000\002\147\000\000\001\203\001\233\002\143\000\000\000\000\002\147\001\234\002\229\000\000\000\000\001\235\000v\000u\002\193\000\000\001\236\000\000\000\000\001_\000\000\001\141\002\187\000\000\001\\\000\000\000\000\001]\000\000\000\173\000\000\000\148\000\000\000\000\002|\000v\000w\000\000\002\162\002\223\005_\002\226\002[\000\000\000\000\000\000\002\148\002\190\000\000\002[\002\149\000h\002\163\002\148\000\148\000q\000\000\002\149\002\195\000w\000\000\000\000\000\149\002\143\000\000\003\003\002\147\000\000\000\000\000\000\000\000\000\000\002\196\002\229\000\000\000v\000\000\000\000\002\143\002\193\000\000\002\147\000\000\000\000\000y\000\149\000\000\000h\000\150\000\000\000\000\000\190\000\151\000\000\002\183\000v\001\216\000j\000{\000w\000\000\000\000\000k\000\000\000\000\000\000\000l\000y\000\000\002[\001\217\000\150\000\000\002\148\001\"\000\151\000\000\002\149\000\000\000w\000\000\000{\000h\002\195\000j\000\149\000q\002\187\002\148\000\000\000u\000\000\002\149\000j\002\187\000\000\000\000\002\196\000k\000\000\000\000\000\000\000l\002\162\002\228\000\149\002\226\000y\000\000\000\000\002\162\000\150\002\190\002\230\000h\000\151\000\000\002\163\000q\002\190\000\000\000{\000\000\000\000\002\163\000h\000u\000y\000j\000q\000\000\000\150\000\000\000k\000\000\000\151\000\000\000l\002\229\001\233\000\000\000{\000\000\000\000\002\193\002\232\000h\000\000\000\000\000\000\000q\002\193\000\000\002\008\002\187\000\000\000\000\000\000\000\000\000\000\000j\000u\003\015\000\000\000\000\000k\000\000\000\000\000\000\000l\002\162\000j\000v\002\230\000\000\000\000\000k\000\000\000\000\002\190\000l\000\000\000\000\000\000\002\163\002\162\000\000\000\000\002\195\002\237\000\000\002\183\000j\000u\000\000\002\195\000w\000k\000\000\002\163\000\000\000l\002\196\000\000\000u\002\232\000\000\000\000\000v\002\196\000\000\002\193\000\000\000\000\000\000\000\000\000\000\000h\000\000\000\000\000\000\000q\000\149\000\000\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000w\003\023\000h\000\000\000\000\000h\000q\000\000\000\000\000q\000\000\000v\000y\000\000\000\000\000\000\000\150\002\235\000\000\000\000\000\151\000\000\000\000\002\195\000\000\000\000\000{\000\000\001\200\001\201\002\183\000j\000\000\003$\000\000\000w\000k\002\196\002\195\000\000\000l\000\000\000\000\000v\0033\000\000\000\000\000\000\000j\000\000\000\000\000j\002\216\000k\000v\000\000\000k\000l\000\000\000h\000l\000\149\002\183\000s\000u\003J\000\000\000w\000\000\000\000\000\000\000\000\000\000\002\183\000j\000v\001\202\000\000\000w\000\000\001\203\000u\000\000\000y\000u\000\000\000\000\000\150\000\000\000\000\000\000\000\151\000\000\000\149\002\183\000\000\000\000\000{\000\000\000w\000\000\000\000\000\000\000\000\000\149\000j\000\000\000\000\000\000\000\000\000k\000\000\000\000\000h\000l\000y\000h\000q\000\000\000\150\000q\000\000\000\000\000\151\000\000\000\149\000y\000\000\000h\000{\000\150\000\000\000q\000\000\000\151\000\000\003R\000\000\000u\000\000\000{\000\000\000\000\000\000\000\000\000\000\000v\000y\000h\000\000\000\000\000\150\000q\003\188\000\000\000\151\003\200\000\000\000\000\000j\000\000\000{\000j\000v\000k\002\183\000v\000k\000l\000\000\000w\000l\000\000\000\000\000j\001\216\000\000\000\000\000\000\000k\000\000\000\000\002\183\000l\000\000\002\183\000\000\000w\000\000\001\217\000w\000\000\000u\000\000\000j\000u\000\149\000\000\000\000\000k\000\000\000\000\000\000\000l\000\000\000\000\000\000\000u\000\000\000\000\000\000\000h\000\000\000\149\000\000\000q\000\149\000\000\000y\000\000\000v\000\000\000\150\000\000\000\000\000\000\000\151\000u\000\000\000\000\000\000\000\000\000{\000\000\000\000\000y\000h\000\000\000y\000\150\000q\000\000\000\150\000\151\000w\000\000\000\151\000\000\000\000\000{\000\000\000\000\000{\000\000\000\000\000\000\000h\000j\001\233\000\000\000q\000\000\000k\000\000\003\206\000\000\000l\003\213\000\000\005,\000x\000\000\002\n\000\000\000v\000\000\000\000\000v\000\000\003\222\000\000\000\000\000j\000\000\000\000\000\000\000\000\000k\000\000\000v\000u\000l\000y\002\183\000\000\000\000\002\183\000\235\000w\003\236\000\000\000w\000j\000\000\000\000\000\000\000{\000k\002\183\000v\000\000\000l\000\000\000w\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\149\000h\000\000\000\149\002\183\000q\000\000\000\000\000\000\000w\000\000\000u\000\000\000\000\005\158\000\149\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000h\000y\000\150\000\000\000q\000\150\000\151\000\000\000\000\000\151\000\000\000\149\000{\000y\003\250\000{\000h\000\150\000\000\000\000\000q\000\151\000\000\000j\000v\000\000\000\000\000{\000k\000\000\000\000\000\000\000l\000y\000\000\000\000\000\000\000\150\000\000\004\001\000\000\000\151\000\000\002\183\000\000\000\000\000j\000{\000w\000v\000\000\000k\000\000\000\000\000\000\000l\000u\000\000\000\000\000\000\000h\000h\000j\000\000\000q\000\189\000\000\000k\002\183\000v\000\000\000l\000\000\000w\000\149\000\000\000\000\000\000\000\000\000u\000\000\000h\000\000\000\000\000\000\000q\000\000\000\000\0059\000\000\000\000\000\000\000\000\000w\000\000\000u\000y\000h\000\000\000\149\000\150\000q\000\000\000\000\000\151\000\000\000j\000j\000\000\000\000\000{\000k\000k\000\000\000\000\000l\000l\000\000\000h\000\149\000h\000y\000q\000\000\000q\000\150\000\000\000j\000\000\000\151\000\000\000\000\000k\000\000\000\000\000{\000l\000\000\000v\000u\000u\000y\000\000\000j\000\000\000\150\000\000\000\000\000k\000\151\000\000\000\000\000l\000\000\000\000\000{\000\000\0059\000\000\000\000\000u\000v\000w\000\000\000j\000\000\000j\000\000\000\000\000k\000\000\000k\000\000\000l\000\000\000l\000u\000v\000\000\000\000\000\182\000\000\000\000\000\000\000\000\000w\000\000\000\000\000\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000u\000\000\000u\000\000\000w\000\000\000\000\000\000\000h\000\000\000\000\000\000\000q\000y\000\149\000\000\000\000\000\150\000\000\000\000\000\000\000\151\000\000\000\000\000v\000v\000\000\000{\000\000\000\000\000\149\000\000\000\000\000\000\000\000\000h\000y\000h\000\000\000q\000\150\000q\000\000\000\245\000\151\000v\000\000\000\000\000w\000w\000{\000\000\000y\000\000\000j\000\000\000\150\000\000\000\000\000k\000\151\000v\000\000\000l\001$\000\000\000{\000>\000\000\000w\000\000\000\000\000h\000\000\000\149\000\000\000q\000\000\000\000\000\000\001\170\000j\000v\000j\000v\000w\000k\000u\000k\000\000\000l\000\000\000l\000\000\000\000\000\149\000y\000\000\000\000\000\000\000\150\001\174\000\000\001\210\000\151\000\000\000w\000\000\000w\000\000\000{\000\149\000\000\000\000\000u\000\000\000u\000y\000j\000\000\000\000\000\150\001Y\000k\000\000\000\151\000h\000l\000\000\000\000\000q\000{\000\149\000y\000\149\000\000\001S\000\150\000\000\000\000\000\000\000\151\000\000\000\000\000\000\000\000\000h\000{\000\000\000h\000q\000u\000\000\000q\000y\000\000\000y\000\000\000\150\000\000\000\150\000h\000\151\000\000\000\151\000q\000\000\000\000\000{\000v\000{\000\000\000j\000\000\000\000\000\000\000\000\000k\000\000\000\000\000\000\000l\000\000\000\000\000\000\000\000\000\000\000\000\002\017\000\000\000\000\000\000\000j\000w\000\000\000j\000v\000k\000v\000\000\000k\000l\000\000\000\000\000l\000u\000\000\000j\000\000\000\000\000\163\001D\000k\000\000\000\000\002\022\000l\002\026\000\000\000\149\000w\000\000\000w\001T\000\000\000u\000\000\000\000\000u\000\000\000\000\000\000\000\000\000v\000\000\000\000\000\000\000\000\000\000\000h\000u\000y\000\000\000q\000\000\000\150\000\149\000\000\000\149\000\151\000\000\001_\0021\002q\000\000\000{\001\\\000w\000\000\001]\000\000\000\173\000\000\000\000\000\000\000\000\002\143\000\000\000y\002\147\000y\000\000\000\150\000\000\000\150\000\000\000\151\000h\000\151\000\000\000\000\000q\000{\000\149\000{\000j\000\000\000v\000\000\000\000\000k\000\000\000h\000\000\000l\000\000\000s\000\000\000h\000\000\000\000\000\000\000s\000\000\000\000\000y\002X\000v\000\000\000\150\000v\000w\002[\000\151\000\000\000\000\002\148\000\000\000u\000{\002\149\000\000\000v\000j\000\000\000\000\002\156\000\000\000k\002\171\000\000\000w\000l\000\000\000w\000\000\000\000\000\149\000j\000\000\000\000\002\173\000\000\000k\000j\000\000\000w\000l\000\000\000k\000\000\000\000\000\000\000l\000\000\000\000\000u\000\149\000\000\000y\000\149\000\000\000\000\000\150\000\000\000\000\000h\000\151\000\000\000\000\000s\000u\000\149\000{\000\000\000\000\000\000\000u\000>\000y\000\000\000\000\000y\000\150\000\000\002\143\000\150\000\151\002\147\000\000\000\151\000\000\000\000\000{\000y\000\000\000{\002\187\000\150\000\000\000v\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000{\000>\000\000\000\000\000j\002\162\000\000\000\000\002\192\000k\000\000\003\176\000\000\000l\002\190\000\000\000w\000\000\000\000\002\163\000\000\000\000\000>\000j\000\000\001Y\000\000\002\148\000\000\000\000\000v\002\149\000\000\000\000\000\000\000\000\000\000\000u\000>\001S\000\000\000\000\000\149\000\000\000\000\000v\002\193\000\000\000\000\004\024\000\000\000v\000\000\000\000\000w\000\000\001Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\150\000w\001S\000\000\000\151\000\000\000\000\000w\000\000\001Y\000{\002\143\000\149\000h\002\147\000\000\000h\000i\000\000\000\000\000i\000\000\002\195\001S\000>\001Y\000\000\000x\000\000\000\000\000\000\000\000\000\000\000x\000y\000>\002\196\000\000\000\150\001S\000\000\000\000\000\151\000\000\000\000\000\163\001D\000\000\000{\000y\000\000\000v\000\000\000\000\000\237\000y\002\162\000j\001T\000j\001\225\002\148\000j\000{\000k\002\149\000\000\000k\000l\000{\002\163\000l\000\000\000\000\000\000\000w\000\163\001D\000\000\001Y\000\000\000\000\000\000\000\000\000\000\000\000\001_\000\000\002\255\001T\001Y\001\\\000u\001S\001]\000u\000\173\000\163\001D\000\000\000\000\000x\000\000\002\143\001S\000\000\002\147\000\000\000\000\000\000\001T\000\000\000\000\000\163\001D\000\000\000\000\001_\000\000\003\n\000h\000\000\001\\\000y\000i\001]\001T\000\173\001\227\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\001_\000\000\003/\002\195\000\000\001\\\000\000\000\000\001]\000\000\000\173\000j\000\000\000\000\000\000\002\148\001_\002\218\003E\002\149\002\162\001\\\000\000\000\000\001]\000\000\000\173\000\000\000j\000\163\001D\000\000\000\000\000k\002\163\000\000\000v\000l\000\000\000v\000\163\001D\001T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001T\000\000\000\000\000\000\000\000\000\000\000\000\000w\000u\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\001_\000\000\003\196\000\000\000\000\001\\\000\000\000\000\001]\000\000\000\173\001_\000\000\003\232\000\000\000\000\001\\\000\000\000\000\001]\000\000\000\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\195\000\000\000\000\000y\000\000\000\000\000y\002\162\000\000\000\000\000\000\000\000\000\000\000\000\002\220\000\000\000\000\000\153\000\000\000\000\000\155\002\163\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\195\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157")) let semantic_action = [| @@ -1519,9 +1529,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_aexpr = -# 1753 "parser_cocci_menhir.mly" +# 1766 "parser_cocci_menhir.mly" ( Ast0.set_arg_exp _1 ) -# 1525 "parser_cocci_menhir.ml" +# 1535 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1542,12 +1552,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 66 "parser_cocci_menhir.mly" (Parse_aux.list_info) -# 1546 "parser_cocci_menhir.ml" +# 1556 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_aexpr = -# 1755 "parser_cocci_menhir.mly" +# 1768 "parser_cocci_menhir.mly" ( let (nm,lenname,pure,clt) = _1 in let nm = P.clt2mcode nm clt in let lenname = @@ -1555,7 +1565,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Some nm -> Some(P.clt2mcode nm clt) | None -> None in Ast0.wrap(Ast0.MetaExprList(nm,lenname,pure)) ) -# 1559 "parser_cocci_menhir.ml" +# 1569 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1577,9 +1587,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_aexpr = -# 1763 "parser_cocci_menhir.mly" +# 1776 "parser_cocci_menhir.mly" ( Ast0.set_arg_exp(Ast0.wrap(Ast0.TypeExp(_1))) ) -# 1583 "parser_cocci_menhir.ml" +# 1593 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1599,9 +1609,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_any_strict = -# 1807 "parser_cocci_menhir.mly" +# 1820 "parser_cocci_menhir.mly" ( Ast.WhenAny ) -# 1605 "parser_cocci_menhir.ml" +# 1615 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1621,9 +1631,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_any_strict = -# 1808 "parser_cocci_menhir.mly" +# 1821 "parser_cocci_menhir.mly" ( Ast.WhenStrict ) -# 1627 "parser_cocci_menhir.ml" +# 1637 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1643,9 +1653,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_any_strict = -# 1809 "parser_cocci_menhir.mly" +# 1822 "parser_cocci_menhir.mly" ( Ast.WhenForall ) -# 1649 "parser_cocci_menhir.ml" +# 1659 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1665,9 +1675,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_any_strict = -# 1810 "parser_cocci_menhir.mly" +# 1823 "parser_cocci_menhir.mly" ( Ast.WhenExists ) -# 1671 "parser_cocci_menhir.ml" +# 1681 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1689,9 +1699,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1254 "parser_cocci_menhir.mly" +# 1263 "parser_cocci_menhir.mly" ( _1 ) -# 1695 "parser_cocci_menhir.ml" +# 1705 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1723,15 +1733,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 1727 "parser_cocci_menhir.ml" +# 1737 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1256 "parser_cocci_menhir.mly" +# 1265 "parser_cocci_menhir.mly" ( P.arith_op Ast.Mul _1 _2 _3 ) -# 1735 "parser_cocci_menhir.ml" +# 1745 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1763,15 +1773,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 97 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 1767 "parser_cocci_menhir.ml" +# 1777 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1258 "parser_cocci_menhir.mly" +# 1267 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 1775 "parser_cocci_menhir.ml" +# 1785 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1803,15 +1813,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 1807 "parser_cocci_menhir.ml" +# 1817 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1260 "parser_cocci_menhir.mly" +# 1269 "parser_cocci_menhir.mly" ( P.arith_op Ast.Plus _1 _2 _3 ) -# 1815 "parser_cocci_menhir.ml" +# 1825 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1843,15 +1853,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 1847 "parser_cocci_menhir.ml" +# 1857 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1262 "parser_cocci_menhir.mly" +# 1271 "parser_cocci_menhir.mly" ( P.arith_op Ast.Minus _1 _2 _3 ) -# 1855 "parser_cocci_menhir.ml" +# 1865 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1883,15 +1893,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 96 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 1887 "parser_cocci_menhir.ml" +# 1897 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1264 "parser_cocci_menhir.mly" +# 1273 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 1895 "parser_cocci_menhir.ml" +# 1905 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1923,15 +1933,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 95 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) -# 1927 "parser_cocci_menhir.ml" +# 1937 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1266 "parser_cocci_menhir.mly" +# 1275 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.logic_op op _1 clt _3 ) -# 1935 "parser_cocci_menhir.ml" +# 1945 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -1963,15 +1973,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 1967 "parser_cocci_menhir.ml" +# 1977 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1268 "parser_cocci_menhir.mly" +# 1277 "parser_cocci_menhir.mly" ( P.logic_op Ast.Eq _1 _2 _3 ) -# 1975 "parser_cocci_menhir.ml" +# 1985 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2003,15 +2013,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 2007 "parser_cocci_menhir.ml" +# 2017 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1270 "parser_cocci_menhir.mly" +# 1279 "parser_cocci_menhir.mly" ( P.logic_op Ast.NotEq _1 _2 _3 ) -# 2015 "parser_cocci_menhir.ml" +# 2025 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2043,15 +2053,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 93 "parser_cocci_menhir.mly" (Data.clt) -# 2047 "parser_cocci_menhir.ml" +# 2057 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1272 "parser_cocci_menhir.mly" +# 1281 "parser_cocci_menhir.mly" ( P.arith_op Ast.And _1 _2 _3 ) -# 2055 "parser_cocci_menhir.ml" +# 2065 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2083,15 +2093,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 91 "parser_cocci_menhir.mly" (Data.clt) -# 2087 "parser_cocci_menhir.ml" +# 2097 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1274 "parser_cocci_menhir.mly" +# 1283 "parser_cocci_menhir.mly" ( P.arith_op Ast.Or _1 _2 _3 ) -# 2095 "parser_cocci_menhir.ml" +# 2105 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2123,15 +2133,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 92 "parser_cocci_menhir.mly" (Data.clt) -# 2127 "parser_cocci_menhir.ml" +# 2137 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1276 "parser_cocci_menhir.mly" +# 1285 "parser_cocci_menhir.mly" ( P.arith_op Ast.Xor _1 _2 _3 ) -# 2135 "parser_cocci_menhir.ml" +# 2145 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2163,15 +2173,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 90 "parser_cocci_menhir.mly" (Data.clt) -# 2167 "parser_cocci_menhir.ml" +# 2177 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1278 "parser_cocci_menhir.mly" +# 1287 "parser_cocci_menhir.mly" ( P.logic_op Ast.AndLog _1 _2 _3 ) -# 2175 "parser_cocci_menhir.ml" +# 2185 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2203,15 +2213,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 89 "parser_cocci_menhir.mly" (Data.clt) -# 2207 "parser_cocci_menhir.ml" +# 2217 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_dot_expressions_ = -# 1280 "parser_cocci_menhir.mly" +# 1289 "parser_cocci_menhir.mly" ( P.logic_op Ast.OrLog _1 _2 _3 ) -# 2215 "parser_cocci_menhir.ml" +# 2225 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2233,9 +2243,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1254 "parser_cocci_menhir.mly" +# 1263 "parser_cocci_menhir.mly" ( _1 ) -# 2239 "parser_cocci_menhir.ml" +# 2249 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2267,15 +2277,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 2271 "parser_cocci_menhir.ml" +# 2281 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1256 "parser_cocci_menhir.mly" +# 1265 "parser_cocci_menhir.mly" ( P.arith_op Ast.Mul _1 _2 _3 ) -# 2279 "parser_cocci_menhir.ml" +# 2289 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2307,15 +2317,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 97 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 2311 "parser_cocci_menhir.ml" +# 2321 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1258 "parser_cocci_menhir.mly" +# 1267 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 2319 "parser_cocci_menhir.ml" +# 2329 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2347,15 +2357,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 2351 "parser_cocci_menhir.ml" +# 2361 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1260 "parser_cocci_menhir.mly" +# 1269 "parser_cocci_menhir.mly" ( P.arith_op Ast.Plus _1 _2 _3 ) -# 2359 "parser_cocci_menhir.ml" +# 2369 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2387,15 +2397,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 2391 "parser_cocci_menhir.ml" +# 2401 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1262 "parser_cocci_menhir.mly" +# 1271 "parser_cocci_menhir.mly" ( P.arith_op Ast.Minus _1 _2 _3 ) -# 2399 "parser_cocci_menhir.ml" +# 2409 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2427,15 +2437,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 96 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 2431 "parser_cocci_menhir.ml" +# 2441 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1264 "parser_cocci_menhir.mly" +# 1273 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 2439 "parser_cocci_menhir.ml" +# 2449 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2467,15 +2477,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 95 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) -# 2471 "parser_cocci_menhir.ml" +# 2481 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1266 "parser_cocci_menhir.mly" +# 1275 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.logic_op op _1 clt _3 ) -# 2479 "parser_cocci_menhir.ml" +# 2489 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2507,15 +2517,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 2511 "parser_cocci_menhir.ml" +# 2521 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1268 "parser_cocci_menhir.mly" +# 1277 "parser_cocci_menhir.mly" ( P.logic_op Ast.Eq _1 _2 _3 ) -# 2519 "parser_cocci_menhir.ml" +# 2529 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2547,15 +2557,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 2551 "parser_cocci_menhir.ml" +# 2561 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1270 "parser_cocci_menhir.mly" +# 1279 "parser_cocci_menhir.mly" ( P.logic_op Ast.NotEq _1 _2 _3 ) -# 2559 "parser_cocci_menhir.ml" +# 2569 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2587,15 +2597,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 93 "parser_cocci_menhir.mly" (Data.clt) -# 2591 "parser_cocci_menhir.ml" +# 2601 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1272 "parser_cocci_menhir.mly" +# 1281 "parser_cocci_menhir.mly" ( P.arith_op Ast.And _1 _2 _3 ) -# 2599 "parser_cocci_menhir.ml" +# 2609 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2627,15 +2637,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 91 "parser_cocci_menhir.mly" (Data.clt) -# 2631 "parser_cocci_menhir.ml" +# 2641 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1274 "parser_cocci_menhir.mly" +# 1283 "parser_cocci_menhir.mly" ( P.arith_op Ast.Or _1 _2 _3 ) -# 2639 "parser_cocci_menhir.ml" +# 2649 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2667,15 +2677,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 92 "parser_cocci_menhir.mly" (Data.clt) -# 2671 "parser_cocci_menhir.ml" +# 2681 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1276 "parser_cocci_menhir.mly" +# 1285 "parser_cocci_menhir.mly" ( P.arith_op Ast.Xor _1 _2 _3 ) -# 2679 "parser_cocci_menhir.ml" +# 2689 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2707,15 +2717,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 90 "parser_cocci_menhir.mly" (Data.clt) -# 2711 "parser_cocci_menhir.ml" +# 2721 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1278 "parser_cocci_menhir.mly" +# 1287 "parser_cocci_menhir.mly" ( P.logic_op Ast.AndLog _1 _2 _3 ) -# 2719 "parser_cocci_menhir.ml" +# 2729 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2747,15 +2757,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 89 "parser_cocci_menhir.mly" (Data.clt) -# 2751 "parser_cocci_menhir.ml" +# 2761 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_invalid_ = -# 1280 "parser_cocci_menhir.mly" +# 1289 "parser_cocci_menhir.mly" ( P.logic_op Ast.OrLog _1 _2 _3 ) -# 2759 "parser_cocci_menhir.ml" +# 2769 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2777,9 +2787,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1254 "parser_cocci_menhir.mly" +# 1263 "parser_cocci_menhir.mly" ( _1 ) -# 2783 "parser_cocci_menhir.ml" +# 2793 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2811,15 +2821,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 2815 "parser_cocci_menhir.ml" +# 2825 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1256 "parser_cocci_menhir.mly" +# 1265 "parser_cocci_menhir.mly" ( P.arith_op Ast.Mul _1 _2 _3 ) -# 2823 "parser_cocci_menhir.ml" +# 2833 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2851,15 +2861,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 97 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 2855 "parser_cocci_menhir.ml" +# 2865 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1258 "parser_cocci_menhir.mly" +# 1267 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 2863 "parser_cocci_menhir.ml" +# 2873 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2891,15 +2901,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 2895 "parser_cocci_menhir.ml" +# 2905 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1260 "parser_cocci_menhir.mly" +# 1269 "parser_cocci_menhir.mly" ( P.arith_op Ast.Plus _1 _2 _3 ) -# 2903 "parser_cocci_menhir.ml" +# 2913 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2931,15 +2941,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 2935 "parser_cocci_menhir.ml" +# 2945 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1262 "parser_cocci_menhir.mly" +# 1271 "parser_cocci_menhir.mly" ( P.arith_op Ast.Minus _1 _2 _3 ) -# 2943 "parser_cocci_menhir.ml" +# 2953 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -2971,15 +2981,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 96 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 2975 "parser_cocci_menhir.ml" +# 2985 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1264 "parser_cocci_menhir.mly" +# 1273 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 2983 "parser_cocci_menhir.ml" +# 2993 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3011,15 +3021,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 95 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) -# 3015 "parser_cocci_menhir.ml" +# 3025 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1266 "parser_cocci_menhir.mly" +# 1275 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.logic_op op _1 clt _3 ) -# 3023 "parser_cocci_menhir.ml" +# 3033 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3051,15 +3061,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 3055 "parser_cocci_menhir.ml" +# 3065 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1268 "parser_cocci_menhir.mly" +# 1277 "parser_cocci_menhir.mly" ( P.logic_op Ast.Eq _1 _2 _3 ) -# 3063 "parser_cocci_menhir.ml" +# 3073 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3091,15 +3101,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 3095 "parser_cocci_menhir.ml" +# 3105 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1270 "parser_cocci_menhir.mly" +# 1279 "parser_cocci_menhir.mly" ( P.logic_op Ast.NotEq _1 _2 _3 ) -# 3103 "parser_cocci_menhir.ml" +# 3113 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3131,15 +3141,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 93 "parser_cocci_menhir.mly" (Data.clt) -# 3135 "parser_cocci_menhir.ml" +# 3145 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1272 "parser_cocci_menhir.mly" +# 1281 "parser_cocci_menhir.mly" ( P.arith_op Ast.And _1 _2 _3 ) -# 3143 "parser_cocci_menhir.ml" +# 3153 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3171,15 +3181,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 91 "parser_cocci_menhir.mly" (Data.clt) -# 3175 "parser_cocci_menhir.ml" +# 3185 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1274 "parser_cocci_menhir.mly" +# 1283 "parser_cocci_menhir.mly" ( P.arith_op Ast.Or _1 _2 _3 ) -# 3183 "parser_cocci_menhir.ml" +# 3193 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3211,15 +3221,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 92 "parser_cocci_menhir.mly" (Data.clt) -# 3215 "parser_cocci_menhir.ml" +# 3225 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1276 "parser_cocci_menhir.mly" +# 1285 "parser_cocci_menhir.mly" ( P.arith_op Ast.Xor _1 _2 _3 ) -# 3223 "parser_cocci_menhir.ml" +# 3233 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3251,15 +3261,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 90 "parser_cocci_menhir.mly" (Data.clt) -# 3255 "parser_cocci_menhir.ml" +# 3265 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1278 "parser_cocci_menhir.mly" +# 1287 "parser_cocci_menhir.mly" ( P.logic_op Ast.AndLog _1 _2 _3 ) -# 3263 "parser_cocci_menhir.ml" +# 3273 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3291,15 +3301,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 89 "parser_cocci_menhir.mly" (Data.clt) -# 3295 "parser_cocci_menhir.ml" +# 3305 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_eexpr_nest_expressions_ = -# 1280 "parser_cocci_menhir.mly" +# 1289 "parser_cocci_menhir.mly" ( P.logic_op Ast.OrLog _1 _2 _3 ) -# 3303 "parser_cocci_menhir.ml" +# 3313 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3321,9 +3331,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1254 "parser_cocci_menhir.mly" +# 1263 "parser_cocci_menhir.mly" ( _1 ) -# 3327 "parser_cocci_menhir.ml" +# 3337 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3355,15 +3365,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 3359 "parser_cocci_menhir.ml" +# 3369 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1256 "parser_cocci_menhir.mly" +# 1265 "parser_cocci_menhir.mly" ( P.arith_op Ast.Mul _1 _2 _3 ) -# 3367 "parser_cocci_menhir.ml" +# 3377 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3395,15 +3405,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 97 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 3399 "parser_cocci_menhir.ml" +# 3409 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1258 "parser_cocci_menhir.mly" +# 1267 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 3407 "parser_cocci_menhir.ml" +# 3417 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3435,15 +3445,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 3439 "parser_cocci_menhir.ml" +# 3449 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1260 "parser_cocci_menhir.mly" +# 1269 "parser_cocci_menhir.mly" ( P.arith_op Ast.Plus _1 _2 _3 ) -# 3447 "parser_cocci_menhir.ml" +# 3457 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3475,15 +3485,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 3479 "parser_cocci_menhir.ml" +# 3489 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1262 "parser_cocci_menhir.mly" +# 1271 "parser_cocci_menhir.mly" ( P.arith_op Ast.Minus _1 _2 _3 ) -# 3487 "parser_cocci_menhir.ml" +# 3497 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3515,15 +3525,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 96 "parser_cocci_menhir.mly" (Ast_cocci.arithOp * Data.clt) -# 3519 "parser_cocci_menhir.ml" +# 3529 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1264 "parser_cocci_menhir.mly" +# 1273 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.arith_op op _1 clt _3 ) -# 3527 "parser_cocci_menhir.ml" +# 3537 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3555,15 +3565,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 95 "parser_cocci_menhir.mly" (Ast_cocci.logicalOp * Data.clt) -# 3559 "parser_cocci_menhir.ml" +# 3569 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1266 "parser_cocci_menhir.mly" +# 1275 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in P.logic_op op _1 clt _3 ) -# 3567 "parser_cocci_menhir.ml" +# 3577 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3595,15 +3605,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 3599 "parser_cocci_menhir.ml" +# 3609 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1268 "parser_cocci_menhir.mly" +# 1277 "parser_cocci_menhir.mly" ( P.logic_op Ast.Eq _1 _2 _3 ) -# 3607 "parser_cocci_menhir.ml" +# 3617 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3635,15 +3645,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 94 "parser_cocci_menhir.mly" (Data.clt) -# 3639 "parser_cocci_menhir.ml" +# 3649 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1270 "parser_cocci_menhir.mly" +# 1279 "parser_cocci_menhir.mly" ( P.logic_op Ast.NotEq _1 _2 _3 ) -# 3647 "parser_cocci_menhir.ml" +# 3657 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3675,15 +3685,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 93 "parser_cocci_menhir.mly" (Data.clt) -# 3679 "parser_cocci_menhir.ml" +# 3689 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1272 "parser_cocci_menhir.mly" +# 1281 "parser_cocci_menhir.mly" ( P.arith_op Ast.And _1 _2 _3 ) -# 3687 "parser_cocci_menhir.ml" +# 3697 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3715,15 +3725,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 91 "parser_cocci_menhir.mly" (Data.clt) -# 3719 "parser_cocci_menhir.ml" +# 3729 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1274 "parser_cocci_menhir.mly" +# 1283 "parser_cocci_menhir.mly" ( P.arith_op Ast.Or _1 _2 _3 ) -# 3727 "parser_cocci_menhir.ml" +# 3737 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3755,15 +3765,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 92 "parser_cocci_menhir.mly" (Data.clt) -# 3759 "parser_cocci_menhir.ml" +# 3769 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1276 "parser_cocci_menhir.mly" +# 1285 "parser_cocci_menhir.mly" ( P.arith_op Ast.Xor _1 _2 _3 ) -# 3767 "parser_cocci_menhir.ml" +# 3777 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3795,15 +3805,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 90 "parser_cocci_menhir.mly" (Data.clt) -# 3799 "parser_cocci_menhir.ml" +# 3809 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1278 "parser_cocci_menhir.mly" +# 1287 "parser_cocci_menhir.mly" ( P.logic_op Ast.AndLog _1 _2 _3 ) -# 3807 "parser_cocci_menhir.ml" +# 3817 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3835,15 +3845,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 89 "parser_cocci_menhir.mly" (Data.clt) -# 3839 "parser_cocci_menhir.ml" +# 3849 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_arith_expr_expr_invalid_ = -# 1280 "parser_cocci_menhir.mly" +# 1289 "parser_cocci_menhir.mly" ( P.logic_op Ast.OrLog _1 _2 _3 ) -# 3847 "parser_cocci_menhir.ml" +# 3857 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3863,9 +3873,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arity = -# 450 "parser_cocci_menhir.mly" +# 459 "parser_cocci_menhir.mly" ( Ast.UNIQUE ) -# 3869 "parser_cocci_menhir.ml" +# 3879 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3885,9 +3895,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arity = -# 451 "parser_cocci_menhir.mly" +# 460 "parser_cocci_menhir.mly" ( Ast.OPT ) -# 3891 "parser_cocci_menhir.ml" +# 3901 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3907,9 +3917,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_arity = -# 452 "parser_cocci_menhir.mly" +# 461 "parser_cocci_menhir.mly" ( Ast.MULTI ) -# 3913 "parser_cocci_menhir.ml" +# 3923 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3924,9 +3934,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_arity = -# 453 "parser_cocci_menhir.mly" +# 462 "parser_cocci_menhir.mly" ( Ast.NONE ) -# 3930 "parser_cocci_menhir.ml" +# 3940 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3957,20 +3967,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let r : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 3961 "parser_cocci_menhir.ml" +# 3971 "parser_cocci_menhir.ml" ) = Obj.magic r in let i : 'tv_option_eexpr_ = Obj.magic i in let l : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 3967 "parser_cocci_menhir.ml" +# 3977 "parser_cocci_menhir.ml" ) = Obj.magic l in let _startpos = _startpos_l_ in let _endpos = _endpos_r_ in let _v : 'tv_array_dec = -# 1061 "parser_cocci_menhir.mly" +# 1070 "parser_cocci_menhir.mly" ( (l,i,r) ) -# 3974 "parser_cocci_menhir.ml" +# 3984 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -3992,9 +4002,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_assign_expr_eexpr_dot_expressions_ = -# 1226 "parser_cocci_menhir.mly" +# 1235 "parser_cocci_menhir.mly" ( _1 ) -# 3998 "parser_cocci_menhir.ml" +# 4008 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4026,17 +4036,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 108 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) -# 4030 "parser_cocci_menhir.ml" +# 4040 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_eexpr_dot_expressions_ = -# 1228 "parser_cocci_menhir.mly" +# 1237 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt, Ast0.set_arg_exp _3,false)) ) -# 4040 "parser_cocci_menhir.ml" +# 4050 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4068,17 +4078,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 4072 "parser_cocci_menhir.ml" +# 4082 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_eexpr_dot_expressions_ = -# 1232 "parser_cocci_menhir.mly" +# 1241 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Assignment (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) ) -# 4082 "parser_cocci_menhir.ml" +# 4092 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4100,9 +4110,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_assign_expr_eexpr_nest_expressions_ = -# 1226 "parser_cocci_menhir.mly" +# 1235 "parser_cocci_menhir.mly" ( _1 ) -# 4106 "parser_cocci_menhir.ml" +# 4116 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4134,17 +4144,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 108 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) -# 4138 "parser_cocci_menhir.ml" +# 4148 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_eexpr_nest_expressions_ = -# 1228 "parser_cocci_menhir.mly" +# 1237 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt, Ast0.set_arg_exp _3,false)) ) -# 4148 "parser_cocci_menhir.ml" +# 4158 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4176,17 +4186,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 4180 "parser_cocci_menhir.ml" +# 4190 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_eexpr_nest_expressions_ = -# 1232 "parser_cocci_menhir.mly" +# 1241 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Assignment (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) ) -# 4190 "parser_cocci_menhir.ml" +# 4200 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4208,9 +4218,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_assign_expr_expr_invalid_ = -# 1226 "parser_cocci_menhir.mly" +# 1235 "parser_cocci_menhir.mly" ( _1 ) -# 4214 "parser_cocci_menhir.ml" +# 4224 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4242,17 +4252,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 108 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) -# 4246 "parser_cocci_menhir.ml" +# 4256 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_unary_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_expr_invalid_ = -# 1228 "parser_cocci_menhir.mly" +# 1237 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt, Ast0.set_arg_exp _3,false)) ) -# 4256 "parser_cocci_menhir.ml" +# 4266 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4284,17 +4294,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 4288 "parser_cocci_menhir.ml" +# 4298 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_unary_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_expr_invalid_ = -# 1232 "parser_cocci_menhir.mly" +# 1241 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Assignment (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) ) -# 4298 "parser_cocci_menhir.ml" +# 4308 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4316,9 +4326,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_assign_expr_bis = -# 1237 "parser_cocci_menhir.mly" +# 1246 "parser_cocci_menhir.mly" ( _1 ) -# 4322 "parser_cocci_menhir.ml" +# 4332 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4350,17 +4360,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 108 "parser_cocci_menhir.mly" (Ast_cocci.assignOp * Data.clt) -# 4354 "parser_cocci_menhir.ml" +# 4364 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_bis = -# 1239 "parser_cocci_menhir.mly" +# 1248 "parser_cocci_menhir.mly" ( let (op,clt) = _2 in Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt, Ast0.set_arg_exp _3,false)) ) -# 4364 "parser_cocci_menhir.ml" +# 4374 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4392,17 +4402,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 4396 "parser_cocci_menhir.ml" +# 4406 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_assign_expr_bis = -# 1243 "parser_cocci_menhir.mly" +# 1252 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Assignment (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) ) -# 4406 "parser_cocci_menhir.ml" +# 4416 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4424,9 +4434,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_basic_expr_eexpr_dot_expressions_ = -# 1223 "parser_cocci_menhir.mly" +# 1232 "parser_cocci_menhir.mly" ( _1 ) -# 4430 "parser_cocci_menhir.ml" +# 4440 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4448,9 +4458,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_basic_expr_eexpr_nest_expressions_ = -# 1223 "parser_cocci_menhir.mly" +# 1232 "parser_cocci_menhir.mly" ( _1 ) -# 4454 "parser_cocci_menhir.ml" +# 4464 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4472,9 +4482,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_basic_expr_expr_invalid_ = -# 1223 "parser_cocci_menhir.mly" +# 1232 "parser_cocci_menhir.mly" ( _1 ) -# 4478 "parser_cocci_menhir.ml" +# 4488 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4506,19 +4516,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 4510 "parser_cocci_menhir.ml" +# 4520 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 4515 "parser_cocci_menhir.ml" +# 4525 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_case_line = -# 933 "parser_cocci_menhir.mly" +# 942 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Default(P.clt2mcode "default" _1,P.clt2mcode ":" _2,_3)) ) -# 4522 "parser_cocci_menhir.ml" +# 4532 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4555,20 +4565,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 4559 "parser_cocci_menhir.ml" +# 4569 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 4565 "parser_cocci_menhir.ml" +# 4575 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_case_line = -# 935 "parser_cocci_menhir.mly" +# 944 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Case(P.clt2mcode "case" _1,_2,P.clt2mcode ":" _3,_4)) ) -# 4572 "parser_cocci_menhir.ml" +# 4582 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4590,9 +4600,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cast_expr_eexpr_dot_expressions_ = -# 1283 "parser_cocci_menhir.mly" +# 1292 "parser_cocci_menhir.mly" ( _1 ) -# 4596 "parser_cocci_menhir.ml" +# 4606 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4629,21 +4639,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 4633 "parser_cocci_menhir.ml" +# 4643 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 4639 "parser_cocci_menhir.ml" +# 4649 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_e_ in let _v : 'tv_cast_expr_eexpr_dot_expressions_ = -# 1285 "parser_cocci_menhir.mly" +# 1294 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t, P.clt2mcode ")" rp, e)) ) -# 4647 "parser_cocci_menhir.ml" +# 4657 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4665,9 +4675,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cast_expr_eexpr_invalid_ = -# 1283 "parser_cocci_menhir.mly" +# 1292 "parser_cocci_menhir.mly" ( _1 ) -# 4671 "parser_cocci_menhir.ml" +# 4681 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4704,21 +4714,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 4708 "parser_cocci_menhir.ml" +# 4718 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 4714 "parser_cocci_menhir.ml" +# 4724 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_e_ in let _v : 'tv_cast_expr_eexpr_invalid_ = -# 1285 "parser_cocci_menhir.mly" +# 1294 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t, P.clt2mcode ")" rp, e)) ) -# 4722 "parser_cocci_menhir.ml" +# 4732 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4740,9 +4750,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cast_expr_eexpr_nest_expressions_ = -# 1283 "parser_cocci_menhir.mly" +# 1292 "parser_cocci_menhir.mly" ( _1 ) -# 4746 "parser_cocci_menhir.ml" +# 4756 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4779,21 +4789,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 4783 "parser_cocci_menhir.ml" +# 4793 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 4789 "parser_cocci_menhir.ml" +# 4799 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_e_ in let _v : 'tv_cast_expr_eexpr_nest_expressions_ = -# 1285 "parser_cocci_menhir.mly" +# 1294 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t, P.clt2mcode ")" rp, e)) ) -# 4797 "parser_cocci_menhir.ml" +# 4807 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4815,9 +4825,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cast_expr_expr_invalid_ = -# 1283 "parser_cocci_menhir.mly" +# 1292 "parser_cocci_menhir.mly" ( _1 ) -# 4821 "parser_cocci_menhir.ml" +# 4831 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4854,21 +4864,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 4858 "parser_cocci_menhir.ml" +# 4868 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 4864 "parser_cocci_menhir.ml" +# 4874 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_e_ in let _v : 'tv_cast_expr_expr_invalid_ = -# 1285 "parser_cocci_menhir.mly" +# 1294 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t, P.clt2mcode ")" rp, e)) ) -# 4872 "parser_cocci_menhir.ml" +# 4882 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4894,9 +4904,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_choose_iso = -# 233 "parser_cocci_menhir.mly" +# 237 "parser_cocci_menhir.mly" ( List.map P.id2name _2 ) -# 4900 "parser_cocci_menhir.ml" +# 4910 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4922,21 +4932,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 4926 "parser_cocci_menhir.ml" +# 4936 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 4931 "parser_cocci_menhir.ml" +# 4941 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_comma_decls_TEllipsis_decl_ = -# 1554 "parser_cocci_menhir.mly" +# 1567 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); dot_builder _2] ) -# 4940 "parser_cocci_menhir.ml" +# 4950 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4963,15 +4973,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 4967 "parser_cocci_menhir.ml" +# 4977 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_comma_decls_TEllipsis_decl_ = -# 1558 "parser_cocci_menhir.mly" +# 1571 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); _2] ) -# 4975 "parser_cocci_menhir.ml" +# 4985 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -4997,21 +5007,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 5001 "parser_cocci_menhir.ml" +# 5011 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 5006 "parser_cocci_menhir.ml" +# 5016 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_comma_decls_TEllipsis_name_opt_decl_ = -# 1554 "parser_cocci_menhir.mly" +# 1567 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); dot_builder _2] ) -# 5015 "parser_cocci_menhir.ml" +# 5025 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5038,15 +5048,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 5042 "parser_cocci_menhir.ml" +# 5052 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_comma_decls_TEllipsis_name_opt_decl_ = -# 1558 "parser_cocci_menhir.mly" +# 1571 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); _2] ) -# 5050 "parser_cocci_menhir.ml" +# 5060 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5061,9 +5071,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = -# 1114 "parser_cocci_menhir.mly" +# 1123 "parser_cocci_menhir.mly" ( [] ) -# 5067 "parser_cocci_menhir.ml" +# 5077 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5091,9 +5101,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_d_ in let _endpos = _endpos_r_ in let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = -# 1116 "parser_cocci_menhir.mly" +# 1125 "parser_cocci_menhir.mly" ( (function dot_builder -> [dot_builder d])::r ) -# 5097 "parser_cocci_menhir.ml" +# 5107 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5125,16 +5135,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 5129 "parser_cocci_menhir.ml" +# 5139 "parser_cocci_menhir.ml" ) = Obj.magic c in let i : 'tv_initialize2 = Obj.magic i in let _startpos = _startpos_i_ in let _endpos = _endpos_r_ in let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = -# 1118 "parser_cocci_menhir.mly" +# 1127 "parser_cocci_menhir.mly" ( (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))]):: r ) -# 5138 "parser_cocci_menhir.ml" +# 5148 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5149,9 +5159,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_comma_initializers2_edots_when_TEllipsis_initialize__ = -# 1122 "parser_cocci_menhir.mly" +# 1131 "parser_cocci_menhir.mly" ( [] ) -# 5155 "parser_cocci_menhir.ml" +# 5165 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5183,16 +5193,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 5187 "parser_cocci_menhir.ml" +# 5197 "parser_cocci_menhir.ml" ) = Obj.magic c in let i : 'tv_initialize2 = Obj.magic i in let _startpos = _startpos_i_ in let _endpos = _endpos_r_ in let _v : 'tv_comma_initializers2_edots_when_TEllipsis_initialize__ = -# 1124 "parser_cocci_menhir.mly" +# 1133 "parser_cocci_menhir.mly" ( (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))]):: r ) -# 5196 "parser_cocci_menhir.ml" +# 5206 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5214,9 +5224,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_any_strict_ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5220 "parser_cocci_menhir.ml" +# 5230 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5238,9 +5248,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_ctype_ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5244 "parser_cocci_menhir.ml" +# 5254 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5262,9 +5272,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_d_ident_ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5268 "parser_cocci_menhir.ml" +# 5278 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5286,9 +5296,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_dexpr_ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5292 "parser_cocci_menhir.ml" +# 5302 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5310,9 +5320,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_ident_or_const_ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5316 "parser_cocci_menhir.ml" +# 5326 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5334,9 +5344,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_meta_ident_ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5340 "parser_cocci_menhir.ml" +# 5350 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5358,9 +5368,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5364 "parser_cocci_menhir.ml" +# 5374 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5382,9 +5392,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5388 "parser_cocci_menhir.ml" +# 5398 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5406,9 +5416,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_not_eq_not_ceq__ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5412 "parser_cocci_menhir.ml" +# 5422 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5430,9 +5440,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_not_eq_not_eq__ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5436 "parser_cocci_menhir.ml" +# 5446 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5454,9 +5464,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_not_eq_not_eqe__ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5460 "parser_cocci_menhir.ml" +# 5470 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5478,9 +5488,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_not_eq_not_pos__ = -# 1785 "parser_cocci_menhir.mly" +# 1798 "parser_cocci_menhir.mly" + ( _1 ) +# 5494 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = Obj.magic _1 in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_seed_ = +# 1798 "parser_cocci_menhir.mly" ( _1 ) -# 5484 "parser_cocci_menhir.ml" +# 5518 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5502,9 +5536,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cond_expr_eexpr_dot_expressions_ = -# 1248 "parser_cocci_menhir.mly" +# 1257 "parser_cocci_menhir.mly" ( _1 ) -# 5508 "parser_cocci_menhir.ml" +# 5542 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5546,22 +5580,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let dd : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 5550 "parser_cocci_menhir.ml" +# 5584 "parser_cocci_menhir.ml" ) = Obj.magic dd in let t : 'tv_option_eexpr_ = Obj.magic t in let w : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 5556 "parser_cocci_menhir.ml" +# 5590 "parser_cocci_menhir.ml" ) = Obj.magic w in let l : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic l in let _startpos = _startpos_l_ in let _endpos = _endpos_r_ in let _v : 'tv_cond_expr_eexpr_dot_expressions_ = -# 1250 "parser_cocci_menhir.mly" +# 1259 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t, P.clt2mcode ":" dd, r)) ) -# 5565 "parser_cocci_menhir.ml" +# 5599 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5583,9 +5617,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cond_expr_eexpr_nest_expressions_ = -# 1248 "parser_cocci_menhir.mly" +# 1257 "parser_cocci_menhir.mly" ( _1 ) -# 5589 "parser_cocci_menhir.ml" +# 5623 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5627,22 +5661,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let dd : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 5631 "parser_cocci_menhir.ml" +# 5665 "parser_cocci_menhir.ml" ) = Obj.magic dd in let t : 'tv_option_eexpr_ = Obj.magic t in let w : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 5637 "parser_cocci_menhir.ml" +# 5671 "parser_cocci_menhir.ml" ) = Obj.magic w in let l : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic l in let _startpos = _startpos_l_ in let _endpos = _endpos_r_ in let _v : 'tv_cond_expr_eexpr_nest_expressions_ = -# 1250 "parser_cocci_menhir.mly" +# 1259 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t, P.clt2mcode ":" dd, r)) ) -# 5646 "parser_cocci_menhir.ml" +# 5680 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5664,9 +5698,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_cond_expr_expr_invalid_ = -# 1248 "parser_cocci_menhir.mly" +# 1257 "parser_cocci_menhir.mly" ( _1 ) -# 5670 "parser_cocci_menhir.ml" +# 5704 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5708,22 +5742,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let dd : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 5712 "parser_cocci_menhir.ml" +# 5746 "parser_cocci_menhir.ml" ) = Obj.magic dd in let t : 'tv_option_eexpr_ = Obj.magic t in let w : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 5718 "parser_cocci_menhir.ml" +# 5752 "parser_cocci_menhir.ml" ) = Obj.magic w in let l : 'tv_arith_expr_expr_invalid_ = Obj.magic l in let _startpos = _startpos_l_ in let _endpos = _endpos_r_ in let _v : 'tv_cond_expr_expr_invalid_ = -# 1250 "parser_cocci_menhir.mly" +# 1259 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t, P.clt2mcode ":" dd, r)) ) -# 5727 "parser_cocci_menhir.ml" +# 5761 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5744,14 +5778,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 54 "parser_cocci_menhir.mly" (Data.clt) -# 5748 "parser_cocci_menhir.ml" +# 5782 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_const_vol = -# 842 "parser_cocci_menhir.mly" +# 851 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Const _1 ) -# 5755 "parser_cocci_menhir.ml" +# 5789 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5772,14 +5806,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 54 "parser_cocci_menhir.mly" (Data.clt) -# 5776 "parser_cocci_menhir.ml" +# 5810 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_const_vol = -# 843 "parser_cocci_menhir.mly" +# 852 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Volatile _1 ) -# 5783 "parser_cocci_menhir.ml" +# 5817 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5794,9 +5828,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_continue_struct_decl_list = -# 540 "parser_cocci_menhir.mly" +# 549 "parser_cocci_menhir.mly" ( [] ) -# 5800 "parser_cocci_menhir.ml" +# 5834 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5824,9 +5858,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_continue_struct_decl_list = -# 541 "parser_cocci_menhir.mly" +# 550 "parser_cocci_menhir.mly" ( _1@_2 ) -# 5830 "parser_cocci_menhir.ml" +# 5864 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5848,9 +5882,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_continue_struct_decl_list = -# 542 "parser_cocci_menhir.mly" +# 551 "parser_cocci_menhir.mly" ( _1 ) -# 5854 "parser_cocci_menhir.ml" +# 5888 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5881,13 +5915,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 5885 "parser_cocci_menhir.ml" +# 5919 "parser_cocci_menhir.ml" in -# 546 "parser_cocci_menhir.mly" +# 555 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 5891 "parser_cocci_menhir.ml" +# 5925 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5925,13 +5959,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 5929 "parser_cocci_menhir.ml" +# 5963 "parser_cocci_menhir.ml" in -# 546 "parser_cocci_menhir.mly" +# 555 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 5935 "parser_cocci_menhir.ml" +# 5969 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -5958,7 +5992,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let t : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 5962 "parser_cocci_menhir.ml" +# 5996 "parser_cocci_menhir.ml" ) = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_m_ in @@ -5966,15 +6000,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 5970 "parser_cocci_menhir.ml" +# 6004 "parser_cocci_menhir.ml" in -# 548 "parser_cocci_menhir.mly" +# 557 "parser_cocci_menhir.mly" ( let ty = Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" t])) in P.pointerify (P.make_cv cv ty) m ) -# 5978 "parser_cocci_menhir.ml" +# 6012 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6006,7 +6040,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let t : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 6010 "parser_cocci_menhir.ml" +# 6044 "parser_cocci_menhir.ml" ) = Obj.magic t in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -6016,15 +6050,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 6020 "parser_cocci_menhir.ml" +# 6054 "parser_cocci_menhir.ml" in -# 548 "parser_cocci_menhir.mly" +# 557 "parser_cocci_menhir.mly" ( let ty = Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" t])) in P.pointerify (P.make_cv cv ty) m ) -# 6028 "parser_cocci_menhir.ml" +# 6062 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6055,22 +6089,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 6059 "parser_cocci_menhir.ml" +# 6093 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_midzero_list_ctype_ctype_ = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 6065 "parser_cocci_menhir.ml" +# 6099 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_rp_ in let _v : 'tv_ctype = -# 553 "parser_cocci_menhir.mly" +# 562 "parser_cocci_menhir.mly" ( let (mids,code) = t in Ast0.wrap (Ast0.DisjType(P.clt2mcode "(" lp,code,mids, P.clt2mcode ")" rp)) ) -# 6074 "parser_cocci_menhir.ml" +# 6108 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6101,13 +6135,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 6105 "parser_cocci_menhir.ml" +# 6139 "parser_cocci_menhir.ml" in -# 559 "parser_cocci_menhir.mly" +# 568 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 6111 "parser_cocci_menhir.ml" +# 6145 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6145,13 +6179,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 6149 "parser_cocci_menhir.ml" +# 6183 "parser_cocci_menhir.ml" in -# 559 "parser_cocci_menhir.mly" +# 568 "parser_cocci_menhir.mly" ( P.pointerify (P.make_cv cv ty) m ) -# 6155 "parser_cocci_menhir.ml" +# 6189 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6178,7 +6212,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let t : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 6182 "parser_cocci_menhir.ml" +# 6216 "parser_cocci_menhir.ml" ) = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_m_ in @@ -6186,15 +6220,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 6190 "parser_cocci_menhir.ml" +# 6224 "parser_cocci_menhir.ml" in -# 561 "parser_cocci_menhir.mly" +# 570 "parser_cocci_menhir.mly" ( let ty = Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" t])) in P.pointerify (P.make_cv cv ty) m ) -# 6198 "parser_cocci_menhir.ml" +# 6232 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6226,7 +6260,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let t : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 6230 "parser_cocci_menhir.ml" +# 6264 "parser_cocci_menhir.ml" ) = Obj.magic t in let x0 : 'tv_const_vol = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -6236,15 +6270,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 6240 "parser_cocci_menhir.ml" +# 6274 "parser_cocci_menhir.ml" in -# 561 "parser_cocci_menhir.mly" +# 570 "parser_cocci_menhir.mly" ( let ty = Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" t])) in P.pointerify (P.make_cv cv ty) m ) -# 6248 "parser_cocci_menhir.ml" +# 6282 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6275,22 +6309,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 6279 "parser_cocci_menhir.ml" +# 6313 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_midzero_list_ctype_ctype_ = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 6285 "parser_cocci_menhir.ml" +# 6319 "parser_cocci_menhir.ml" ) = Obj.magic lp in let _startpos = _startpos_lp_ in let _endpos = _endpos_rp_ in let _v : 'tv_ctype_full = -# 566 "parser_cocci_menhir.mly" +# 575 "parser_cocci_menhir.mly" ( let (mids,code) = t in Ast0.wrap (Ast0.DisjType(P.clt2mcode "(" lp,code,mids, P.clt2mcode ")" rp)) ) -# 6294 "parser_cocci_menhir.ml" +# 6328 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6318,7 +6352,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_d_ident = -# 1052 "parser_cocci_menhir.mly" +# 1061 "parser_cocci_menhir.mly" ( (_1, function t -> List.fold_right @@ -6327,7 +6361,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Ast0.wrap (Ast0.Array(rest,P.clt2mcode "[" l,i,P.clt2mcode "]" r))) _2 t) ) -# 6331 "parser_cocci_menhir.ml" +# 6365 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6355,9 +6389,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_i_ in let _v : 'tv_decl = -# 812 "parser_cocci_menhir.mly" +# 821 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Param(t, Some i)) ) -# 6361 "parser_cocci_menhir.ml" +# 6395 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6413,42 +6447,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 6417 "parser_cocci_menhir.ml" +# 6451 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 6423 "parser_cocci_menhir.ml" +# 6457 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 6428 "parser_cocci_menhir.ml" +# 6462 "parser_cocci_menhir.ml" ) = Obj.magic rp in let i : 'tv_ident = Obj.magic i in let s : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 6434 "parser_cocci_menhir.ml" +# 6468 "parser_cocci_menhir.ml" ) = Obj.magic s in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 6439 "parser_cocci_menhir.ml" +# 6473 "parser_cocci_menhir.ml" ) = Obj.magic lp in let t : 'tv_fn_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_rp1_ in let _v : 'tv_decl = -# 815 "parser_cocci_menhir.mly" +# 824 "parser_cocci_menhir.mly" ( let fnptr = Ast0.wrap (Ast0.FunctionPointer (t,P.clt2mcode "(" lp,P.clt2mcode "*" s,P.clt2mcode ")" rp, P.clt2mcode "(" lp1,d,P.clt2mcode ")" rp1)) in Ast0.wrap(Ast0.Param(fnptr, Some i)) ) -# 6452 "parser_cocci_menhir.ml" +# 6486 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6469,16 +6503,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let t : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 6473 "parser_cocci_menhir.ml" +# 6507 "parser_cocci_menhir.ml" ) = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_t_ in let _v : 'tv_decl = -# 822 "parser_cocci_menhir.mly" +# 831 "parser_cocci_menhir.mly" ( let ty = Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" t])) in Ast0.wrap(Ast0.VoidParam(ty)) ) -# 6482 "parser_cocci_menhir.ml" +# 6516 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6499,15 +6533,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 6503 "parser_cocci_menhir.ml" +# 6537 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl = -# 826 "parser_cocci_menhir.mly" +# 835 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = _1 in Ast0.wrap(Ast0.MetaParam(P.clt2mcode nm clt,pure)) ) -# 6511 "parser_cocci_menhir.ml" +# 6545 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6528,14 +6562,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 59 "parser_cocci_menhir.mly" (string * Data.clt) -# 6532 "parser_cocci_menhir.ml" +# 6566 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_ident = -# 1503 "parser_cocci_menhir.mly" +# 1516 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) ) -# 6539 "parser_cocci_menhir.ml" +# 6573 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6556,15 +6590,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 62 "parser_cocci_menhir.mly" (Parse_aux.idinfo) -# 6560 "parser_cocci_menhir.ml" +# 6594 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_ident = -# 1505 "parser_cocci_menhir.mly" +# 1518 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) ) -# 6568 "parser_cocci_menhir.ml" +# 6602 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6579,9 +6613,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_decl_list_decl_ = -# 1525 "parser_cocci_menhir.mly" +# 1538 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS([])) ) -# 6585 "parser_cocci_menhir.ml" +# 6619 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6603,13 +6637,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_list_decl_ = -# 1527 "parser_cocci_menhir.mly" +# 1540 "parser_cocci_menhir.mly" (let circle x = match Ast0.unwrap x with Ast0.Pcircles(_) -> true | _ -> false in if List.exists circle _1 then Ast0.wrap(Ast0.CIRCLES(_1)) else Ast0.wrap(Ast0.DOTS(_1)) ) -# 6613 "parser_cocci_menhir.ml" +# 6647 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6624,9 +6658,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_decl_list_name_opt_decl_ = -# 1525 "parser_cocci_menhir.mly" +# 1538 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS([])) ) -# 6630 "parser_cocci_menhir.ml" +# 6664 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6648,13 +6682,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_list_name_opt_decl_ = -# 1527 "parser_cocci_menhir.mly" +# 1540 "parser_cocci_menhir.mly" (let circle x = match Ast0.unwrap x with Ast0.Pcircles(_) -> true | _ -> false in if List.exists circle _1 then Ast0.wrap(Ast0.CIRCLES(_1)) else Ast0.wrap(Ast0.DOTS(_1)) ) -# 6658 "parser_cocci_menhir.ml" +# 6692 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6676,9 +6710,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_list_start_decl_ = -# 1534 "parser_cocci_menhir.mly" +# 1547 "parser_cocci_menhir.mly" ( [_1] ) -# 6682 "parser_cocci_menhir.ml" +# 6716 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6710,15 +6744,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 6714 "parser_cocci_menhir.ml" +# 6748 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_decl_list_start_decl_ = -# 1536 "parser_cocci_menhir.mly" +# 1549 "parser_cocci_menhir.mly" ( _1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," _2))::_3 ) -# 6722 "parser_cocci_menhir.ml" +# 6756 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6745,15 +6779,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 6749 "parser_cocci_menhir.ml" +# 6783 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_decl_list_start_decl_ = -# 1538 "parser_cocci_menhir.mly" +# 1551 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." _1)):: (List.concat(List.map (function x -> x (P.mkpdots "...")) _2)) ) -# 6757 "parser_cocci_menhir.ml" +# 6791 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6775,9 +6809,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_list_start_name_opt_decl_ = -# 1534 "parser_cocci_menhir.mly" +# 1547 "parser_cocci_menhir.mly" ( [_1] ) -# 6781 "parser_cocci_menhir.ml" +# 6815 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6809,15 +6843,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 6813 "parser_cocci_menhir.ml" +# 6847 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_decl_list_start_name_opt_decl_ = -# 1536 "parser_cocci_menhir.mly" +# 1549 "parser_cocci_menhir.mly" ( _1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," _2))::_3 ) -# 6821 "parser_cocci_menhir.ml" +# 6855 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6844,15 +6878,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 6848 "parser_cocci_menhir.ml" +# 6882 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_decl_list_start_name_opt_decl_ = -# 1538 "parser_cocci_menhir.mly" +# 1551 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." _1)):: (List.concat(List.map (function x -> x (P.mkpdots "...")) _2)) ) -# 6856 "parser_cocci_menhir.ml" +# 6890 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6873,15 +6907,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 6877 "parser_cocci_menhir.ml" +# 6911 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement = -# 1130 "parser_cocci_menhir.mly" +# 1139 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = _1 in [Ast0.wrap(Ast0.MetaStmt(P.clt2mcode nm clt,pure))] ) -# 6885 "parser_cocci_menhir.ml" +# 6919 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6903,13 +6937,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement = -# 1133 "parser_cocci_menhir.mly" +# 1142 "parser_cocci_menhir.mly" ( List.map (function x -> Ast0.wrap (Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),x))) _1 ) -# 6913 "parser_cocci_menhir.ml" +# 6947 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6931,9 +6965,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement = -# 1138 "parser_cocci_menhir.mly" +# 1147 "parser_cocci_menhir.mly" ( [_1] ) -# 6937 "parser_cocci_menhir.ml" +# 6971 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -6964,18 +6998,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 6968 "parser_cocci_menhir.ml" +# 7002 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let t : 'tv_midzero_list_fun_start_fun_start_ = Obj.magic t in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 6974 "parser_cocci_menhir.ml" +# 7008 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_decl_statement = -# 1147 "parser_cocci_menhir.mly" +# 1156 "parser_cocci_menhir.mly" ( let (mids,code) = t in if List.for_all (function x -> @@ -6985,7 +7019,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct else [Ast0.wrap(Ast0.Disj(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3))] ) -# 6989 "parser_cocci_menhir.ml" +# 7023 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7006,15 +7040,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 7010 "parser_cocci_menhir.ml" +# 7044 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement_expr = -# 1160 "parser_cocci_menhir.mly" +# 1169 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = _1 in [Ast0.wrap(Ast0.MetaStmt(P.clt2mcode nm clt,pure))] ) -# 7018 "parser_cocci_menhir.ml" +# 7052 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7036,13 +7070,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement_expr = -# 1163 "parser_cocci_menhir.mly" +# 1172 "parser_cocci_menhir.mly" ( List.map (function x -> Ast0.wrap (Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),x))) _1 ) -# 7046 "parser_cocci_menhir.ml" +# 7080 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7064,9 +7098,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_decl_statement_expr = -# 1168 "parser_cocci_menhir.mly" +# 1177 "parser_cocci_menhir.mly" ( [_1] ) -# 7070 "parser_cocci_menhir.ml" +# 7104 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7097,18 +7131,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 7101 "parser_cocci_menhir.ml" +# 7135 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let t : 'tv_midzero_list_fun_after_stm_fun_after_dots_or_ = Obj.magic t in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 7107 "parser_cocci_menhir.ml" +# 7141 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_decl_statement_expr = -# 1177 "parser_cocci_menhir.mly" +# 1186 "parser_cocci_menhir.mly" ( let (mids,code) = t in if List.for_all (function [] -> true | _ -> false) code then [] @@ -7117,7 +7151,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct List.map (function x -> Ast0.wrap(Ast0.DOTS x)) code in [Ast0.wrap(Ast0.Disj(P.clt2mcode "(" _1, dot_code, mids, P.clt2mcode ")" _3))] ) -# 7121 "parser_cocci_menhir.ml" +# 7155 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7143,15 +7177,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7147 "parser_cocci_menhir.ml" +# 7181 "parser_cocci_menhir.ml" ) = Obj.magic pv in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_pv_ in let _v : 'tv_decl_var = -# 943 "parser_cocci_menhir.mly" +# 952 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.TyDecl(t,P.clt2mcode ";" pv))] ) -# 7155 "parser_cocci_menhir.ml" +# 7189 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7182,7 +7216,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7186 "parser_cocci_menhir.ml" +# 7220 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_comma_list_d_ident_ = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -7192,16 +7226,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 7196 "parser_cocci_menhir.ml" +# 7230 "parser_cocci_menhir.ml" in -# 945 "parser_cocci_menhir.mly" +# 954 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv))) d ) -# 7205 "parser_cocci_menhir.ml" +# 7239 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7237,7 +7271,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7241 "parser_cocci_menhir.ml" +# 7275 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_comma_list_d_ident_ = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -7249,16 +7283,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7253 "parser_cocci_menhir.ml" +# 7287 "parser_cocci_menhir.ml" in -# 945 "parser_cocci_menhir.mly" +# 954 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv))) d ) -# 7262 "parser_cocci_menhir.ml" +# 7296 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7280,9 +7314,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_f_ in let _v : 'tv_decl_var = -# 949 "parser_cocci_menhir.mly" +# 958 "parser_cocci_menhir.mly" ( [f] ) -# 7286 "parser_cocci_menhir.ml" +# 7320 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7323,13 +7357,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7327 "parser_cocci_menhir.ml" +# 7361 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7333 "parser_cocci_menhir.ml" +# 7367 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -7339,14 +7373,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 7343 "parser_cocci_menhir.ml" +# 7377 "parser_cocci_menhir.ml" in -# 951 "parser_cocci_menhir.mly" +# 960 "parser_cocci_menhir.mly" (let (id,fn) = d in [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))]) -# 7350 "parser_cocci_menhir.ml" +# 7384 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7392,13 +7426,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7396 "parser_cocci_menhir.ml" +# 7430 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7402 "parser_cocci_menhir.ml" +# 7436 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -7410,14 +7444,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7414 "parser_cocci_menhir.ml" +# 7448 "parser_cocci_menhir.ml" in -# 951 "parser_cocci_menhir.mly" +# 960 "parser_cocci_menhir.mly" (let (id,fn) = d in [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))]) -# 7421 "parser_cocci_menhir.ml" +# 7455 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7448,7 +7482,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7452 "parser_cocci_menhir.ml" +# 7486 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_comma_list_d_ident_ = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -7458,25 +7492,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 7462 "parser_cocci_menhir.ml" +# 7496 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 7469 "parser_cocci_menhir.ml" +# 7503 "parser_cocci_menhir.ml" in -# 956 "parser_cocci_menhir.mly" +# 965 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv))) d ) -# 7480 "parser_cocci_menhir.ml" +# 7514 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7512,7 +7546,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7516 "parser_cocci_menhir.ml" +# 7550 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_comma_list_d_ident_ = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -7524,25 +7558,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7528 "parser_cocci_menhir.ml" +# 7562 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 7535 "parser_cocci_menhir.ml" +# 7569 "parser_cocci_menhir.ml" in -# 956 "parser_cocci_menhir.mly" +# 965 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv))) d ) -# 7546 "parser_cocci_menhir.ml" +# 7580 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7578,7 +7612,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7582 "parser_cocci_menhir.ml" +# 7616 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_comma_list_d_ident_ = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -7589,7 +7623,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 7593 "parser_cocci_menhir.ml" +# 7627 "parser_cocci_menhir.ml" in let s = @@ -7597,18 +7631,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7601 "parser_cocci_menhir.ml" +# 7635 "parser_cocci_menhir.ml" in -# 956 "parser_cocci_menhir.mly" +# 965 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv))) d ) -# 7612 "parser_cocci_menhir.ml" +# 7646 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7649,7 +7683,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7653 "parser_cocci_menhir.ml" +# 7687 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_comma_list_d_ident_ = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -7662,7 +7696,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7666 "parser_cocci_menhir.ml" +# 7700 "parser_cocci_menhir.ml" in let s = @@ -7670,18 +7704,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7674 "parser_cocci_menhir.ml" +# 7708 "parser_cocci_menhir.ml" in -# 956 "parser_cocci_menhir.mly" +# 965 "parser_cocci_menhir.mly" ( List.map (function (id,fn) -> let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv))) d ) -# 7685 "parser_cocci_menhir.ml" +# 7719 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7722,13 +7756,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7726 "parser_cocci_menhir.ml" +# 7760 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7732 "parser_cocci_menhir.ml" +# 7766 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -7738,24 +7772,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 7742 "parser_cocci_menhir.ml" +# 7776 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 7749 "parser_cocci_menhir.ml" +# 7783 "parser_cocci_menhir.ml" in -# 964 "parser_cocci_menhir.mly" +# 973 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in [Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv))] ) -# 7759 "parser_cocci_menhir.ml" +# 7793 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7801,13 +7835,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7805 "parser_cocci_menhir.ml" +# 7839 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7811 "parser_cocci_menhir.ml" +# 7845 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -7819,24 +7853,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7823 "parser_cocci_menhir.ml" +# 7857 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 7830 "parser_cocci_menhir.ml" +# 7864 "parser_cocci_menhir.ml" in -# 964 "parser_cocci_menhir.mly" +# 973 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in [Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv))] ) -# 7840 "parser_cocci_menhir.ml" +# 7874 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7882,13 +7916,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7886 "parser_cocci_menhir.ml" +# 7920 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7892 "parser_cocci_menhir.ml" +# 7926 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -7899,7 +7933,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 7903 "parser_cocci_menhir.ml" +# 7937 "parser_cocci_menhir.ml" in let s = @@ -7907,17 +7941,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7911 "parser_cocci_menhir.ml" +# 7945 "parser_cocci_menhir.ml" in -# 964 "parser_cocci_menhir.mly" +# 973 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in [Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv))] ) -# 7921 "parser_cocci_menhir.ml" +# 7955 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -7968,13 +8002,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7972 "parser_cocci_menhir.ml" +# 8006 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 7978 "parser_cocci_menhir.ml" +# 8012 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -7987,7 +8021,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7991 "parser_cocci_menhir.ml" +# 8025 "parser_cocci_menhir.ml" in let s = @@ -7995,17 +8029,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 7999 "parser_cocci_menhir.ml" +# 8033 "parser_cocci_menhir.ml" in -# 964 "parser_cocci_menhir.mly" +# 973 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in [Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv))] ) -# 8009 "parser_cocci_menhir.ml" +# 8043 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8066,34 +8100,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8070 "parser_cocci_menhir.ml" +# 8104 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8075 "parser_cocci_menhir.ml" +# 8109 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8081 "parser_cocci_menhir.ml" +# 8115 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8086 "parser_cocci_menhir.ml" +# 8120 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 8092 "parser_cocci_menhir.ml" +# 8126 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8097 "parser_cocci_menhir.ml" +# 8131 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let _startpos = _startpos_t_ in @@ -8102,11 +8136,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 8106 "parser_cocci_menhir.ml" +# 8140 "parser_cocci_menhir.ml" in -# 974 "parser_cocci_menhir.mly" +# 983 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -8114,7 +8148,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in [Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv))] ) -# 8118 "parser_cocci_menhir.ml" +# 8152 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8180,34 +8214,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8184 "parser_cocci_menhir.ml" +# 8218 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8189 "parser_cocci_menhir.ml" +# 8223 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8195 "parser_cocci_menhir.ml" +# 8229 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8200 "parser_cocci_menhir.ml" +# 8234 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 8206 "parser_cocci_menhir.ml" +# 8240 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8211 "parser_cocci_menhir.ml" +# 8245 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let x0 : 'tv_storage = Obj.magic x0 in @@ -8218,11 +8252,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 8222 "parser_cocci_menhir.ml" +# 8256 "parser_cocci_menhir.ml" in -# 974 "parser_cocci_menhir.mly" +# 983 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -8230,7 +8264,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in [Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv))] ) -# 8234 "parser_cocci_menhir.ml" +# 8268 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8271,27 +8305,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _5 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8275 "parser_cocci_menhir.ml" +# 8309 "parser_cocci_menhir.ml" ) = Obj.magic _5 in let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8280 "parser_cocci_menhir.ml" +# 8314 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8286 "parser_cocci_menhir.ml" +# 8320 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_decl_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_decl_var = -# 982 "parser_cocci_menhir.mly" +# 991 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.MacroDecl(_1,P.clt2mcode "(" _2,_3, P.clt2mcode ")" _4,P.clt2mcode ";" _5))] ) -# 8295 "parser_cocci_menhir.ml" +# 8329 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8362,40 +8396,40 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8366 "parser_cocci_menhir.ml" +# 8400 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8372 "parser_cocci_menhir.ml" +# 8406 "parser_cocci_menhir.ml" ) = Obj.magic q in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8377 "parser_cocci_menhir.ml" +# 8411 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8383 "parser_cocci_menhir.ml" +# 8417 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8388 "parser_cocci_menhir.ml" +# 8422 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 8394 "parser_cocci_menhir.ml" +# 8428 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8399 "parser_cocci_menhir.ml" +# 8433 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let _startpos = _startpos_t_ in @@ -8404,11 +8438,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 8408 "parser_cocci_menhir.ml" +# 8442 "parser_cocci_menhir.ml" in -# 988 "parser_cocci_menhir.mly" +# 997 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -8416,7 +8450,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))]) -# 8420 "parser_cocci_menhir.ml" +# 8454 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8492,40 +8526,40 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8496 "parser_cocci_menhir.ml" +# 8530 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8502 "parser_cocci_menhir.ml" +# 8536 "parser_cocci_menhir.ml" ) = Obj.magic q in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8507 "parser_cocci_menhir.ml" +# 8541 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8513 "parser_cocci_menhir.ml" +# 8547 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8518 "parser_cocci_menhir.ml" +# 8552 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 8524 "parser_cocci_menhir.ml" +# 8558 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 8529 "parser_cocci_menhir.ml" +# 8563 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let x0 : 'tv_storage = Obj.magic x0 in @@ -8536,11 +8570,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 8540 "parser_cocci_menhir.ml" +# 8574 "parser_cocci_menhir.ml" in -# 988 "parser_cocci_menhir.mly" +# 997 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -8548,7 +8582,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))]) -# 8552 "parser_cocci_menhir.ml" +# 8586 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8584,22 +8618,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8588 "parser_cocci_menhir.ml" +# 8622 "parser_cocci_menhir.ml" ) = Obj.magic pv in let id : 'tv_typedef_ident = Obj.magic id in let t : 'tv_ctype_full = Obj.magic t in let s : ( # 53 "parser_cocci_menhir.mly" (Data.clt) -# 8595 "parser_cocci_menhir.ml" +# 8629 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_pv_ in let _v : 'tv_decl_var = -# 996 "parser_cocci_menhir.mly" +# 1005 "parser_cocci_menhir.mly" ( let s = P.clt2mcode "typedef" s in [Ast0.wrap(Ast0.Typedef(s,t,id,P.clt2mcode ";" pv))] ) -# 8603 "parser_cocci_menhir.ml" +# 8637 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8621,13 +8655,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_define_param_list = -# 704 "parser_cocci_menhir.mly" +# 713 "parser_cocci_menhir.mly" (let circle x = match Ast0.unwrap x with Ast0.DPcircles(_) -> true | _ -> false in if List.exists circle _1 then Ast0.wrap(Ast0.CIRCLES(_1)) else Ast0.wrap(Ast0.DOTS(_1)) ) -# 8631 "parser_cocci_menhir.ml" +# 8665 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8649,9 +8683,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_define_param_list_option = -# 728 "parser_cocci_menhir.mly" +# 737 "parser_cocci_menhir.mly" ( _1 ) -# 8655 "parser_cocci_menhir.ml" +# 8689 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8666,9 +8700,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_define_param_list_option = -# 729 "parser_cocci_menhir.mly" +# 738 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS([])) ) -# 8672 "parser_cocci_menhir.ml" +# 8706 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8690,9 +8724,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_define_param_list_start = -# 711 "parser_cocci_menhir.mly" +# 720 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.DParam _1)] ) -# 8696 "parser_cocci_menhir.ml" +# 8730 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8724,16 +8758,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 8728 "parser_cocci_menhir.ml" +# 8762 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_define_param_list_start = -# 713 "parser_cocci_menhir.mly" +# 722 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DParam _1):: Ast0.wrap(Ast0.DPComma(P.clt2mcode "," _2))::_3 ) -# 8737 "parser_cocci_menhir.ml" +# 8771 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8760,15 +8794,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let d : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 8764 "parser_cocci_menhir.ml" +# 8798 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos_r_ in let _v : 'tv_define_param_list_start = -# 716 "parser_cocci_menhir.mly" +# 725 "parser_cocci_menhir.mly" ( (P.mkdpdots "..." d):: (List.concat (List.map (function x -> x (P.mkdpdots "...")) r)) ) -# 8772 "parser_cocci_menhir.ml" +# 8806 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8789,12 +8823,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 81 "parser_cocci_menhir.mly" (Data.clt * token) -# 8793 "parser_cocci_menhir.ml" +# 8827 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_defineop = -# 664 "parser_cocci_menhir.mly" +# 673 "parser_cocci_menhir.mly" ( let (clt,ident) = _1 in function body -> Ast0.wrap @@ -8811,7 +8845,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct "unexpected name for a #define")), Ast0.wrap Ast0.NoParams, body)) ) -# 8815 "parser_cocci_menhir.ml" +# 8849 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8842,18 +8876,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 8846 "parser_cocci_menhir.ml" +# 8880 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_define_param_list_option = Obj.magic _2 in let _1 : ( # 82 "parser_cocci_menhir.mly" (Data.clt * token * int) -# 8852 "parser_cocci_menhir.ml" +# 8886 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_defineop = -# 681 "parser_cocci_menhir.mly" +# 690 "parser_cocci_menhir.mly" ( let (clt,ident,parenoff) = _1 in let (arity,line,lline,offset,col,strbef,straft,pos) = clt in let lp = @@ -8873,7 +8907,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (Semantic_cocci.Semantic "unexpected name for a #define")), Ast0.wrap (Ast0.DParams (lp,_2,P.clt2mcode ")" _3)),body)) ) -# 8877 "parser_cocci_menhir.ml" +# 8911 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8895,9 +8929,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_dep = -# 221 "parser_cocci_menhir.mly" +# 225 "parser_cocci_menhir.mly" ( _1 ) -# 8901 "parser_cocci_menhir.ml" +# 8935 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8929,9 +8963,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_dep = -# 222 "parser_cocci_menhir.mly" +# 226 "parser_cocci_menhir.mly" ( Ast.AndDep(_1, _3) ) -# 8935 "parser_cocci_menhir.ml" +# 8969 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8963,9 +8997,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_dep = -# 223 "parser_cocci_menhir.mly" +# 227 "parser_cocci_menhir.mly" ( Ast.OrDep (_1, _3) ) -# 8969 "parser_cocci_menhir.ml" +# 9003 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -8980,9 +9014,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_depends = -# 217 "parser_cocci_menhir.mly" +# 221 "parser_cocci_menhir.mly" ( Ast.NoDep ) -# 8986 "parser_cocci_menhir.ml" +# 9020 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9012,9 +9046,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_parents_ in let _v : 'tv_depends = -# 218 "parser_cocci_menhir.mly" +# 222 "parser_cocci_menhir.mly" ( parents ) -# 9018 "parser_cocci_menhir.ml" +# 9052 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9041,14 +9075,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 9045 "parser_cocci_menhir.ml" +# 9079 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_designator = -# 1094 "parser_cocci_menhir.mly" +# 1103 "parser_cocci_menhir.mly" ( Ast0.DesignatorField (P.clt2mcode "." _1,_2) ) -# 9052 "parser_cocci_menhir.ml" +# 9086 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9079,20 +9113,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 9083 "parser_cocci_menhir.ml" +# 9117 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 9089 "parser_cocci_menhir.ml" +# 9123 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_designator = -# 1096 "parser_cocci_menhir.mly" +# 1105 "parser_cocci_menhir.mly" ( Ast0.DesignatorIndex (P.clt2mcode "[" _1,_2,P.clt2mcode "]" _3) ) -# 9096 "parser_cocci_menhir.ml" +# 9130 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9133,27 +9167,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _5 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 9137 "parser_cocci_menhir.ml" +# 9171 "parser_cocci_menhir.ml" ) = Obj.magic _5 in let _4 : 'tv_eexpr = Obj.magic _4 in let _3 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9143 "parser_cocci_menhir.ml" +# 9177 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 9149 "parser_cocci_menhir.ml" +# 9183 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_designator = -# 1098 "parser_cocci_menhir.mly" +# 1107 "parser_cocci_menhir.mly" ( Ast0.DesignatorRange (P.clt2mcode "[" _1,_2,P.clt2mcode "..." _3, _4,P.clt2mcode "]" _5) ) -# 9157 "parser_cocci_menhir.ml" +# 9191 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9175,9 +9209,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_dexpr = -# 1197 "parser_cocci_menhir.mly" +# 1206 "parser_cocci_menhir.mly" ( _1 ) -# 9181 "parser_cocci_menhir.ml" +# 9215 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9203,9 +9237,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_disable = -# 236 "parser_cocci_menhir.mly" +# 240 "parser_cocci_menhir.mly" ( List.map P.id2name _2 ) -# 9209 "parser_cocci_menhir.ml" +# 9243 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9226,14 +9260,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9230 "parser_cocci_menhir.ml" +# 9264 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_dot_expressions = -# 1206 "parser_cocci_menhir.mly" +# 1215 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Edots(P.clt2mcode "..." _1,None)) ) -# 9237 "parser_cocci_menhir.ml" +# 9271 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9255,9 +9289,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_dot_expressions = -# 1207 "parser_cocci_menhir.mly" +# 1216 "parser_cocci_menhir.mly" ( _1 ) -# 9261 "parser_cocci_menhir.ml" +# 9295 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9283,20 +9317,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let d : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9287 "parser_cocci_menhir.ml" +# 9321 "parser_cocci_menhir.ml" ) = Obj.magic d in let c : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 9292 "parser_cocci_menhir.ml" +# 9326 "parser_cocci_menhir.ml" ) = Obj.magic c in let _startpos = _startpos_c_ in let _endpos = _endpos_d_ in let _v : 'tv_dp_comma_args_TEllipsis_ = -# 721 "parser_cocci_menhir.mly" +# 730 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," c)); dot_builder d] ) -# 9300 "parser_cocci_menhir.ml" +# 9334 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9323,16 +9357,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 9327 "parser_cocci_menhir.ml" +# 9361 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_dp_comma_args_TEllipsis_ = -# 724 "parser_cocci_menhir.mly" +# 733 "parser_cocci_menhir.mly" ( function dot_builder -> [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," _1)); Ast0.wrap(Ast0.DParam _2)] ) -# 9336 "parser_cocci_menhir.ml" +# 9370 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9353,14 +9387,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let d : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9357 "parser_cocci_menhir.ml" +# 9391 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : 'tv_edots_when_TEllipsis_eexpr_ = -# 1795 "parser_cocci_menhir.mly" +# 1808 "parser_cocci_menhir.mly" ( (d,None) ) -# 9364 "parser_cocci_menhir.ml" +# 9398 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9399,14 +9433,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let d : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9403 "parser_cocci_menhir.ml" +# 9437 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos__5_ in let _v : 'tv_edots_when_TEllipsis_eexpr_ = -# 1796 "parser_cocci_menhir.mly" +# 1809 "parser_cocci_menhir.mly" ( (d,Some w) ) -# 9410 "parser_cocci_menhir.ml" +# 9444 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9427,14 +9461,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let d : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9431 "parser_cocci_menhir.ml" +# 9465 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : 'tv_edots_when_TEllipsis_initialize_ = -# 1795 "parser_cocci_menhir.mly" +# 1808 "parser_cocci_menhir.mly" ( (d,None) ) -# 9438 "parser_cocci_menhir.ml" +# 9472 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9473,14 +9507,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let d : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9477 "parser_cocci_menhir.ml" +# 9511 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos__5_ in let _v : 'tv_edots_when_TEllipsis_initialize_ = -# 1796 "parser_cocci_menhir.mly" +# 1809 "parser_cocci_menhir.mly" ( (d,Some w) ) -# 9484 "parser_cocci_menhir.ml" +# 9518 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9501,14 +9535,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let d : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9505 "parser_cocci_menhir.ml" +# 9539 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : 'tv_edots_when_TEllipsis_struct_decl_ = -# 1795 "parser_cocci_menhir.mly" +# 1808 "parser_cocci_menhir.mly" ( (d,None) ) -# 9512 "parser_cocci_menhir.ml" +# 9546 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9547,14 +9581,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let d : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 9551 "parser_cocci_menhir.ml" +# 9585 "parser_cocci_menhir.ml" ) = Obj.magic d in let _startpos = _startpos_d_ in let _endpos = _endpos__5_ in let _v : 'tv_edots_when_TEllipsis_struct_decl_ = -# 1796 "parser_cocci_menhir.mly" +# 1809 "parser_cocci_menhir.mly" ( (d,Some w) ) -# 9558 "parser_cocci_menhir.ml" +# 9592 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9576,9 +9610,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_eexpr = -# 1195 "parser_cocci_menhir.mly" +# 1204 "parser_cocci_menhir.mly" ( _1 ) -# 9582 "parser_cocci_menhir.ml" +# 9616 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9600,7 +9634,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_eexpr_list = -# 1739 "parser_cocci_menhir.mly" +# 1752 "parser_cocci_menhir.mly" (let circle x = match Ast0.unwrap x with Ast0.Ecircles(_) -> true | _ -> false in let star x = @@ -9611,7 +9645,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct if List.exists star _1 then Ast0.wrap(Ast0.STARS(_1)) else Ast0.wrap(Ast0.DOTS(_1)) ) -# 9615 "parser_cocci_menhir.ml" +# 9649 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9633,9 +9667,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_eexpr_list_option = -# 1778 "parser_cocci_menhir.mly" +# 1791 "parser_cocci_menhir.mly" ( _1 ) -# 9639 "parser_cocci_menhir.ml" +# 9673 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9650,9 +9684,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_eexpr_list_option = -# 1779 "parser_cocci_menhir.mly" +# 1792 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS([])) ) -# 9656 "parser_cocci_menhir.ml" +# 9690 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9674,9 +9708,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_eexpr_list_start = -# 1766 "parser_cocci_menhir.mly" +# 1779 "parser_cocci_menhir.mly" ( [_1] ) -# 9680 "parser_cocci_menhir.ml" +# 9714 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9708,15 +9742,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 9712 "parser_cocci_menhir.ml" +# 9746 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_aexpr = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_eexpr_list_start = -# 1768 "parser_cocci_menhir.mly" +# 1781 "parser_cocci_menhir.mly" ( _1::Ast0.wrap(Ast0.EComma(P.clt2mcode "," _2))::_3 ) -# 9720 "parser_cocci_menhir.ml" +# 9754 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9758,9 +9792,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__6_ in let _v : 'tv_error_words = -# 1565 "parser_cocci_menhir.mly" +# 1578 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.ERRORWORDS(cl))] ) -# 9764 "parser_cocci_menhir.ml" +# 9798 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9780,9 +9814,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_exists = -# 239 "parser_cocci_menhir.mly" +# 243 "parser_cocci_menhir.mly" ( Ast.Exists ) -# 9786 "parser_cocci_menhir.ml" +# 9820 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9802,9 +9836,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_exists = -# 240 "parser_cocci_menhir.mly" +# 244 "parser_cocci_menhir.mly" ( Ast.Forall ) -# 9808 "parser_cocci_menhir.ml" +# 9842 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9828,9 +9862,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_exists = -# 241 "parser_cocci_menhir.mly" +# 245 "parser_cocci_menhir.mly" ( Ast.ReverseForall ) -# 9834 "parser_cocci_menhir.ml" +# 9868 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9845,9 +9879,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_exists = -# 242 "parser_cocci_menhir.mly" +# 246 "parser_cocci_menhir.mly" ( Ast.Undetermined ) -# 9851 "parser_cocci_menhir.ml" +# 9885 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9869,9 +9903,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_expr = -# 1193 "parser_cocci_menhir.mly" +# 1202 "parser_cocci_menhir.mly" ( _1 ) -# 9875 "parser_cocci_menhir.ml" +# 9909 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9893,9 +9927,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_r_ in let _endpos = _endpos_r_ in let _v : 'tv_expr_dots_TEllipsis_ = -# 1375 "parser_cocci_menhir.mly" +# 1384 "parser_cocci_menhir.mly" ( r ) -# 9899 "parser_cocci_menhir.ml" +# 9933 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9910,9 +9944,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_extends = -# 212 "parser_cocci_menhir.mly" +# 216 "parser_cocci_menhir.mly" ( () ) -# 9916 "parser_cocci_menhir.ml" +# 9950 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9937,14 +9971,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let parent : ( # 47 "parser_cocci_menhir.mly" (string) -# 9941 "parser_cocci_menhir.ml" +# 9975 "parser_cocci_menhir.ml" ) = Obj.magic parent in let _startpos = _startpos__1_ in let _endpos = _endpos_parent_ in let _v : 'tv_extends = -# 214 "parser_cocci_menhir.mly" +# 218 "parser_cocci_menhir.mly" ( !Data.install_bindings (parent) ) -# 9948 "parser_cocci_menhir.ml" +# 9982 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -9970,21 +10004,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 83 "parser_cocci_menhir.mly" (string * Data.clt) -# 9974 "parser_cocci_menhir.ml" +# 10008 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 83 "parser_cocci_menhir.mly" (string * Data.clt) -# 9979 "parser_cocci_menhir.ml" +# 10013 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_filespec = -# 623 "parser_cocci_menhir.mly" +# 632 "parser_cocci_menhir.mly" ( [Ast0.wrap (Ast0.FILEINFO(P.id2mcode _1, P.id2mcode _2))] ) -# 9988 "parser_cocci_menhir.ml" +# 10022 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10012,9 +10046,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ty_ in let _endpos = _endpos_m_ in let _v : 'tv_fn_ctype = -# 572 "parser_cocci_menhir.mly" +# 581 "parser_cocci_menhir.mly" ( P.pointerify ty m ) -# 10018 "parser_cocci_menhir.ml" +# 10052 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10041,16 +10075,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let t : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 10045 "parser_cocci_menhir.ml" +# 10079 "parser_cocci_menhir.ml" ) = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_m_ in let _v : 'tv_fn_ctype = -# 574 "parser_cocci_menhir.mly" +# 583 "parser_cocci_menhir.mly" ( P.pointerify (Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" t]))) m ) -# 10054 "parser_cocci_menhir.ml" +# 10088 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10065,9 +10099,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fninfo = -# 767 "parser_cocci_menhir.mly" +# 776 "parser_cocci_menhir.mly" ( [] ) -# 10071 "parser_cocci_menhir.ml" +# 10105 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10095,13 +10129,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo = -# 769 "parser_cocci_menhir.mly" +# 778 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FStorage(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "duplicate storage") with Not_found -> (Ast0.FStorage(_1))::_2 ) -# 10105 "parser_cocci_menhir.ml" +# 10139 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10129,9 +10163,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_r_ in let _v : 'tv_fninfo = -# 774 "parser_cocci_menhir.mly" +# 783 "parser_cocci_menhir.mly" ( (Ast0.FType(t))::r ) -# 10135 "parser_cocci_menhir.ml" +# 10169 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10158,17 +10192,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 53 "parser_cocci_menhir.mly" (Data.clt) -# 10162 "parser_cocci_menhir.ml" +# 10196 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo = -# 776 "parser_cocci_menhir.mly" +# 785 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FInline(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "duplicate inline") with Not_found -> (Ast0.FInline(P.clt2mcode "inline" _1))::_2 ) -# 10172 "parser_cocci_menhir.ml" +# 10206 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10195,17 +10229,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 55 "parser_cocci_menhir.mly" (string * Data.clt) -# 10199 "parser_cocci_menhir.ml" +# 10233 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo = -# 781 "parser_cocci_menhir.mly" +# 790 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FAttr(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "multiple attributes") with Not_found -> (Ast0.FAttr(P.id2mcode _1))::_2 ) -# 10209 "parser_cocci_menhir.ml" +# 10243 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10220,9 +10254,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fninfo_nt = -# 787 "parser_cocci_menhir.mly" +# 796 "parser_cocci_menhir.mly" ( [] ) -# 10226 "parser_cocci_menhir.ml" +# 10260 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10250,13 +10284,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo_nt = -# 789 "parser_cocci_menhir.mly" +# 798 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FStorage(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "duplicate storage") with Not_found -> (Ast0.FStorage(_1))::_2 ) -# 10260 "parser_cocci_menhir.ml" +# 10294 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10283,17 +10317,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 53 "parser_cocci_menhir.mly" (Data.clt) -# 10287 "parser_cocci_menhir.ml" +# 10321 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo_nt = -# 795 "parser_cocci_menhir.mly" +# 804 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FInline(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "duplicate inline") with Not_found -> (Ast0.FInline(P.clt2mcode "inline" _1))::_2 ) -# 10297 "parser_cocci_menhir.ml" +# 10331 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10320,17 +10354,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 55 "parser_cocci_menhir.mly" (string * Data.clt) -# 10324 "parser_cocci_menhir.ml" +# 10358 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fninfo_nt = -# 800 "parser_cocci_menhir.mly" +# 809 "parser_cocci_menhir.mly" ( try let _ = List.find (function Ast0.FAttr(_) -> true | _ -> false) _2 in raise (Semantic_cocci.Semantic "duplicate init") with Not_found -> (Ast0.FAttr(P.id2mcode _1))::_2 ) -# 10334 "parser_cocci_menhir.ml" +# 10368 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10345,9 +10379,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fun_after_dots = -# 1687 "parser_cocci_menhir.mly" +# 1700 "parser_cocci_menhir.mly" ([]) -# 10351 "parser_cocci_menhir.ml" +# 10385 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10373,9 +10407,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots = -# 1688 "parser_cocci_menhir.mly" +# 1701 "parser_cocci_menhir.mly" (_2) -# 10379 "parser_cocci_menhir.ml" +# 10413 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10403,9 +10437,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots = -# 1689 "parser_cocci_menhir.mly" +# 1702 "parser_cocci_menhir.mly" (Ast0.wrap(Ast0.Exp(_1))::_2) -# 10409 "parser_cocci_menhir.ml" +# 10443 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10433,9 +10467,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots = -# 1690 "parser_cocci_menhir.mly" +# 1703 "parser_cocci_menhir.mly" (_1@_2) -# 10439 "parser_cocci_menhir.ml" +# 10473 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10450,9 +10484,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fun_after_dots_or = -# 1697 "parser_cocci_menhir.mly" +# 1710 "parser_cocci_menhir.mly" ([]) -# 10456 "parser_cocci_menhir.ml" +# 10490 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10478,9 +10512,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots_or = -# 1698 "parser_cocci_menhir.mly" +# 1711 "parser_cocci_menhir.mly" (_2) -# 10484 "parser_cocci_menhir.ml" +# 10518 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10508,9 +10542,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots_or = -# 1699 "parser_cocci_menhir.mly" +# 1712 "parser_cocci_menhir.mly" (Ast0.wrap(Ast0.Exp(_1))::_2) -# 10514 "parser_cocci_menhir.ml" +# 10548 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10538,9 +10572,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_dots_or = -# 1700 "parser_cocci_menhir.mly" +# 1713 "parser_cocci_menhir.mly" (_1@_2) -# 10544 "parser_cocci_menhir.ml" +# 10578 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10568,9 +10602,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_exp = -# 1693 "parser_cocci_menhir.mly" +# 1706 "parser_cocci_menhir.mly" (_1::_2) -# 10574 "parser_cocci_menhir.ml" +# 10608 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10585,9 +10619,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fun_after_exp_or = -# 1703 "parser_cocci_menhir.mly" +# 1716 "parser_cocci_menhir.mly" ([]) -# 10591 "parser_cocci_menhir.ml" +# 10625 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10615,9 +10649,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_exp_or = -# 1704 "parser_cocci_menhir.mly" +# 1717 "parser_cocci_menhir.mly" (_1::_2) -# 10621 "parser_cocci_menhir.ml" +# 10655 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10632,9 +10666,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_fun_after_stm = -# 1682 "parser_cocci_menhir.mly" +# 1695 "parser_cocci_menhir.mly" ([]) -# 10638 "parser_cocci_menhir.ml" +# 10672 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10662,9 +10696,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_stm = -# 1683 "parser_cocci_menhir.mly" +# 1696 "parser_cocci_menhir.mly" (_1::_2) -# 10668 "parser_cocci_menhir.ml" +# 10702 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10692,9 +10726,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_fun_after_stm = -# 1684 "parser_cocci_menhir.mly" +# 1697 "parser_cocci_menhir.mly" (_1@_2) -# 10698 "parser_cocci_menhir.ml" +# 10732 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10716,9 +10750,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_fun_start = -# 1679 "parser_cocci_menhir.mly" +# 1692 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1)) ) -# 10722 "parser_cocci_menhir.ml" +# 10756 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10740,9 +10774,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_func_ident = -# 1483 "parser_cocci_menhir.mly" +# 1496 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) ) -# 10746 "parser_cocci_menhir.ml" +# 10780 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10763,15 +10797,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 61 "parser_cocci_menhir.mly" (Parse_aux.idinfo) -# 10767 "parser_cocci_menhir.ml" +# 10801 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_func_ident = -# 1485 "parser_cocci_menhir.mly" +# 1498 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) ) -# 10775 "parser_cocci_menhir.ml" +# 10809 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10792,15 +10826,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 61 "parser_cocci_menhir.mly" (Parse_aux.idinfo) -# 10796 "parser_cocci_menhir.ml" +# 10830 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_func_ident = -# 1488 "parser_cocci_menhir.mly" +# 1501 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaFunc(P.clt2mcode nm clt,constraints,pure)) ) -# 10804 "parser_cocci_menhir.ml" +# 10838 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10821,16 +10855,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 61 "parser_cocci_menhir.mly" (Parse_aux.idinfo) -# 10825 "parser_cocci_menhir.ml" +# 10859 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_func_ident = -# 1491 "parser_cocci_menhir.mly" +# 1504 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap (Ast0.MetaLocalFunc(P.clt2mcode nm clt,constraints,pure)) ) -# 10834 "parser_cocci_menhir.ml" +# 10868 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10890,38 +10924,38 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rb : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 10894 "parser_cocci_menhir.ml" +# 10928 "parser_cocci_menhir.ml" ) = Obj.magic rb in let b : 'tv_fun_start = Obj.magic b in let lb : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 10900 "parser_cocci_menhir.ml" +# 10934 "parser_cocci_menhir.ml" ) = Obj.magic lb in let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 10905 "parser_cocci_menhir.ml" +# 10939 "parser_cocci_menhir.ml" ) = Obj.magic rp in let d : 'tv_decl_list_decl_ = Obj.magic d in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 10911 "parser_cocci_menhir.ml" +# 10945 "parser_cocci_menhir.ml" ) = Obj.magic lp in let i : 'tv_func_ident = Obj.magic i in let f : 'tv_fninfo = Obj.magic f in let _startpos = _startpos_f_ in let _endpos = _endpos_rb_ in let _v : 'tv_fundecl = -# 759 "parser_cocci_menhir.mly" +# 768 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunDecl((Ast0.default_info(),Ast0.context_befaft()), f, i, P.clt2mcode "(" lp, d, P.clt2mcode ")" rp, P.clt2mcode "{" lb, b, P.clt2mcode "}" rb)) ) -# 10925 "parser_cocci_menhir.ml" +# 10959 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -10967,18 +11001,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pt : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 10971 "parser_cocci_menhir.ml" +# 11005 "parser_cocci_menhir.ml" ) = Obj.magic pt in let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 10976 "parser_cocci_menhir.ml" +# 11010 "parser_cocci_menhir.ml" ) = Obj.magic rp in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 10982 "parser_cocci_menhir.ml" +# 11016 "parser_cocci_menhir.ml" ) = Obj.magic lp in let id : 'tv_func_ident = Obj.magic id in let t : 'tv_ctype = Obj.magic t in @@ -10988,11 +11022,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 10992 "parser_cocci_menhir.ml" +# 11026 "parser_cocci_menhir.ml" in -# 736 "parser_cocci_menhir.mly" +# 745 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.UnInit (s, @@ -11000,7 +11034,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (Ast0.FunctionType(Some t, P.clt2mcode "(" lp, d, P.clt2mcode ")" rp)), id, P.clt2mcode ";" pt)) ) -# 11004 "parser_cocci_menhir.ml" +# 11038 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11051,18 +11085,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pt : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 11055 "parser_cocci_menhir.ml" +# 11089 "parser_cocci_menhir.ml" ) = Obj.magic pt in let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 11060 "parser_cocci_menhir.ml" +# 11094 "parser_cocci_menhir.ml" ) = Obj.magic rp in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 11066 "parser_cocci_menhir.ml" +# 11100 "parser_cocci_menhir.ml" ) = Obj.magic lp in let id : 'tv_func_ident = Obj.magic id in let t : 'tv_ctype = Obj.magic t in @@ -11074,11 +11108,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 11078 "parser_cocci_menhir.ml" +# 11112 "parser_cocci_menhir.ml" in -# 736 "parser_cocci_menhir.mly" +# 745 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.UnInit (s, @@ -11086,7 +11120,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (Ast0.FunctionType(Some t, P.clt2mcode "(" lp, d, P.clt2mcode ")" rp)), id, P.clt2mcode ";" pt)) ) -# 11090 "parser_cocci_menhir.ml" +# 11124 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11132,24 +11166,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pt : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 11136 "parser_cocci_menhir.ml" +# 11170 "parser_cocci_menhir.ml" ) = Obj.magic pt in let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 11141 "parser_cocci_menhir.ml" +# 11175 "parser_cocci_menhir.ml" ) = Obj.magic rp in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 11147 "parser_cocci_menhir.ml" +# 11181 "parser_cocci_menhir.ml" ) = Obj.magic lp in let id : 'tv_func_ident = Obj.magic id in let t : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 11153 "parser_cocci_menhir.ml" +# 11187 "parser_cocci_menhir.ml" ) = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_pt_ in @@ -11157,11 +11191,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 11161 "parser_cocci_menhir.ml" +# 11195 "parser_cocci_menhir.ml" in -# 745 "parser_cocci_menhir.mly" +# 754 "parser_cocci_menhir.mly" ( let t = Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" t])) in Ast0.wrap (Ast0.UnInit @@ -11170,7 +11204,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (Ast0.FunctionType(Some t, P.clt2mcode "(" lp, d, P.clt2mcode ")" rp)), id, P.clt2mcode ";" pt)) ) -# 11174 "parser_cocci_menhir.ml" +# 11208 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11221,24 +11255,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pt : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 11225 "parser_cocci_menhir.ml" +# 11259 "parser_cocci_menhir.ml" ) = Obj.magic pt in let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 11230 "parser_cocci_menhir.ml" +# 11264 "parser_cocci_menhir.ml" ) = Obj.magic rp in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 11236 "parser_cocci_menhir.ml" +# 11270 "parser_cocci_menhir.ml" ) = Obj.magic lp in let id : 'tv_func_ident = Obj.magic id in let t : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 11242 "parser_cocci_menhir.ml" +# 11276 "parser_cocci_menhir.ml" ) = Obj.magic t in let x0 : 'tv_storage = Obj.magic x0 in let _startpos = _startpos_x0_ in @@ -11248,11 +11282,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 11252 "parser_cocci_menhir.ml" +# 11286 "parser_cocci_menhir.ml" in -# 745 "parser_cocci_menhir.mly" +# 754 "parser_cocci_menhir.mly" ( let t = Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" t])) in Ast0.wrap (Ast0.UnInit @@ -11261,7 +11295,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (Ast0.FunctionType(Some t, P.clt2mcode "(" lp, d, P.clt2mcode ")" rp)), id, P.clt2mcode ";" pt)) ) -# 11265 "parser_cocci_menhir.ml" +# 11299 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11282,22 +11316,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let r0 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11286 "parser_cocci_menhir.ml" +# 11320 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_r0_ in let _v : 'tv_generic_ctype = let q = let r = r0 in -# 580 "parser_cocci_menhir.mly" +# 589 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,x)) ) -# 11295 "parser_cocci_menhir.ml" +# 11329 "parser_cocci_menhir.ml" in -# 504 "parser_cocci_menhir.mly" +# 513 "parser_cocci_menhir.mly" ( q None ) -# 11301 "parser_cocci_menhir.ml" +# 11335 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11318,22 +11352,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let r0 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11322 "parser_cocci_menhir.ml" +# 11356 "parser_cocci_menhir.ml" ) = Obj.magic r0 in let _startpos = _startpos_r0_ in let _endpos = _endpos_r0_ in let _v : 'tv_generic_ctype = let q = let r = r0 in -# 582 "parser_cocci_menhir.mly" +# 591 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,x)) ) -# 11331 "parser_cocci_menhir.ml" +# 11365 "parser_cocci_menhir.ml" in -# 504 "parser_cocci_menhir.mly" +# 513 "parser_cocci_menhir.mly" ( q None ) -# 11337 "parser_cocci_menhir.ml" +# 11371 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11355,9 +11389,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_generic_ctype = -# 505 "parser_cocci_menhir.mly" +# 514 "parser_cocci_menhir.mly" ( _1 ) -# 11361 "parser_cocci_menhir.ml" +# 11395 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11383,12 +11417,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11387 "parser_cocci_menhir.ml" +# 11421 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11392 "parser_cocci_menhir.ml" +# 11426 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty_ in @@ -11397,21 +11431,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 580 "parser_cocci_menhir.mly" +# 589 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,x)) ) -# 11403 "parser_cocci_menhir.ml" +# 11437 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 11409 "parser_cocci_menhir.ml" +# 11443 "parser_cocci_menhir.ml" in -# 457 "parser_cocci_menhir.mly" +# 466 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty]))) ) -# 11415 "parser_cocci_menhir.ml" +# 11449 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11437,12 +11471,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11441 "parser_cocci_menhir.ml" +# 11475 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11446 "parser_cocci_menhir.ml" +# 11480 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty_ in @@ -11451,21 +11485,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 582 "parser_cocci_menhir.mly" +# 591 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,x)) ) -# 11457 "parser_cocci_menhir.ml" +# 11491 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 11463 "parser_cocci_menhir.ml" +# 11497 "parser_cocci_menhir.ml" in -# 457 "parser_cocci_menhir.mly" +# 466 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty]))) ) -# 11469 "parser_cocci_menhir.ml" +# 11503 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11486,21 +11520,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11490 "parser_cocci_menhir.ml" +# 11524 "parser_cocci_menhir.ml" ) = Obj.magic ty in let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : 'tv_generic_ctype_full = let q = -# 586 "parser_cocci_menhir.mly" +# 595 "parser_cocci_menhir.mly" ( function x -> x ) -# 11498 "parser_cocci_menhir.ml" +# 11532 "parser_cocci_menhir.ml" in -# 457 "parser_cocci_menhir.mly" +# 466 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty]))) ) -# 11504 "parser_cocci_menhir.ml" +# 11538 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11526,12 +11560,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11530 "parser_cocci_menhir.ml" +# 11564 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11535 "parser_cocci_menhir.ml" +# 11569 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty_ in @@ -11540,21 +11574,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 580 "parser_cocci_menhir.mly" +# 589 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,x)) ) -# 11546 "parser_cocci_menhir.ml" +# 11580 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 11552 "parser_cocci_menhir.ml" +# 11586 "parser_cocci_menhir.ml" in -# 459 "parser_cocci_menhir.mly" +# 468 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])))) -# 11558 "parser_cocci_menhir.ml" +# 11592 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11580,12 +11614,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11584 "parser_cocci_menhir.ml" +# 11618 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11589 "parser_cocci_menhir.ml" +# 11623 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty_ in @@ -11594,21 +11628,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 582 "parser_cocci_menhir.mly" +# 591 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,x)) ) -# 11600 "parser_cocci_menhir.ml" +# 11634 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 11606 "parser_cocci_menhir.ml" +# 11640 "parser_cocci_menhir.ml" in -# 459 "parser_cocci_menhir.mly" +# 468 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])))) -# 11612 "parser_cocci_menhir.ml" +# 11646 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11629,21 +11663,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11633 "parser_cocci_menhir.ml" +# 11667 "parser_cocci_menhir.ml" ) = Obj.magic ty in let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : 'tv_generic_ctype_full = let q = -# 586 "parser_cocci_menhir.mly" +# 595 "parser_cocci_menhir.mly" ( function x -> x ) -# 11641 "parser_cocci_menhir.ml" +# 11675 "parser_cocci_menhir.ml" in -# 459 "parser_cocci_menhir.mly" +# 468 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])))) -# 11647 "parser_cocci_menhir.ml" +# 11681 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11669,12 +11703,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11673 "parser_cocci_menhir.ml" +# 11707 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11678 "parser_cocci_menhir.ml" +# 11712 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty_ in @@ -11683,21 +11717,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 580 "parser_cocci_menhir.mly" +# 589 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,x)) ) -# 11689 "parser_cocci_menhir.ml" +# 11723 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 11695 "parser_cocci_menhir.ml" +# 11729 "parser_cocci_menhir.ml" in -# 461 "parser_cocci_menhir.mly" +# 470 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty]))) ) -# 11701 "parser_cocci_menhir.ml" +# 11735 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11723,12 +11757,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11727 "parser_cocci_menhir.ml" +# 11761 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11732 "parser_cocci_menhir.ml" +# 11766 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty_ in @@ -11737,21 +11771,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 582 "parser_cocci_menhir.mly" +# 591 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,x)) ) -# 11743 "parser_cocci_menhir.ml" +# 11777 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 11749 "parser_cocci_menhir.ml" +# 11783 "parser_cocci_menhir.ml" in -# 461 "parser_cocci_menhir.mly" +# 470 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty]))) ) -# 11755 "parser_cocci_menhir.ml" +# 11789 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11772,21 +11806,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11776 "parser_cocci_menhir.ml" +# 11810 "parser_cocci_menhir.ml" ) = Obj.magic ty in let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : 'tv_generic_ctype_full = let q = -# 586 "parser_cocci_menhir.mly" +# 595 "parser_cocci_menhir.mly" ( function x -> x ) -# 11784 "parser_cocci_menhir.ml" +# 11818 "parser_cocci_menhir.ml" in -# 461 "parser_cocci_menhir.mly" +# 470 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty]))) ) -# 11790 "parser_cocci_menhir.ml" +# 11824 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11807,14 +11841,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let t : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11811 "parser_cocci_menhir.ml" +# 11845 "parser_cocci_menhir.ml" ) = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_t_ in let _v : 'tv_generic_ctype_full = -# 463 "parser_cocci_menhir.mly" +# 472 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" t])) ) -# 11818 "parser_cocci_menhir.ml" +# 11852 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11835,14 +11869,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let t : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11839 "parser_cocci_menhir.ml" +# 11873 "parser_cocci_menhir.ml" ) = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_t_ in let _v : 'tv_generic_ctype_full = -# 465 "parser_cocci_menhir.mly" +# 474 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" t])) ) -# 11846 "parser_cocci_menhir.ml" +# 11880 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11868,12 +11902,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11872 "parser_cocci_menhir.ml" +# 11906 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11877 "parser_cocci_menhir.ml" +# 11911 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty_ in @@ -11882,21 +11916,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 580 "parser_cocci_menhir.mly" +# 589 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,x)) ) -# 11888 "parser_cocci_menhir.ml" +# 11922 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 11894 "parser_cocci_menhir.ml" +# 11928 "parser_cocci_menhir.ml" in -# 467 "parser_cocci_menhir.mly" +# 476 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty]))) ) -# 11900 "parser_cocci_menhir.ml" +# 11934 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11922,12 +11956,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11926 "parser_cocci_menhir.ml" +# 11960 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 11931 "parser_cocci_menhir.ml" +# 11965 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty_ in @@ -11936,21 +11970,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 582 "parser_cocci_menhir.mly" +# 591 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,x)) ) -# 11942 "parser_cocci_menhir.ml" +# 11976 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 11948 "parser_cocci_menhir.ml" +# 11982 "parser_cocci_menhir.ml" in -# 467 "parser_cocci_menhir.mly" +# 476 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty]))) ) -# 11954 "parser_cocci_menhir.ml" +# 11988 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -11971,21 +12005,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 11975 "parser_cocci_menhir.ml" +# 12009 "parser_cocci_menhir.ml" ) = Obj.magic ty in let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : 'tv_generic_ctype_full = let q = -# 586 "parser_cocci_menhir.mly" +# 595 "parser_cocci_menhir.mly" ( function x -> x ) -# 11983 "parser_cocci_menhir.ml" +# 12017 "parser_cocci_menhir.ml" in -# 467 "parser_cocci_menhir.mly" +# 476 "parser_cocci_menhir.mly" ( q (Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty]))) ) -# 11989 "parser_cocci_menhir.ml" +# 12023 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12016,17 +12050,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty1 : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 12020 "parser_cocci_menhir.ml" +# 12054 "parser_cocci_menhir.ml" ) = Obj.magic ty1 in let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 12025 "parser_cocci_menhir.ml" +# 12059 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 12030 "parser_cocci_menhir.ml" +# 12064 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty1_ in @@ -12035,24 +12069,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 580 "parser_cocci_menhir.mly" +# 589 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,x)) ) -# 12041 "parser_cocci_menhir.ml" +# 12075 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 12047 "parser_cocci_menhir.ml" +# 12081 "parser_cocci_menhir.ml" in -# 469 "parser_cocci_menhir.mly" +# 478 "parser_cocci_menhir.mly" ( q (Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty;P.clt2mcode "long" ty1]))) ) -# 12056 "parser_cocci_menhir.ml" +# 12090 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12083,17 +12117,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty1 : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 12087 "parser_cocci_menhir.ml" +# 12121 "parser_cocci_menhir.ml" ) = Obj.magic ty1 in let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 12092 "parser_cocci_menhir.ml" +# 12126 "parser_cocci_menhir.ml" ) = Obj.magic ty in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 12097 "parser_cocci_menhir.ml" +# 12131 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_ty1_ in @@ -12102,24 +12136,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 582 "parser_cocci_menhir.mly" +# 591 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,x)) ) -# 12108 "parser_cocci_menhir.ml" +# 12142 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 12114 "parser_cocci_menhir.ml" +# 12148 "parser_cocci_menhir.ml" in -# 469 "parser_cocci_menhir.mly" +# 478 "parser_cocci_menhir.mly" ( q (Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty;P.clt2mcode "long" ty1]))) ) -# 12123 "parser_cocci_menhir.ml" +# 12157 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12145,29 +12179,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let ty1 : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 12149 "parser_cocci_menhir.ml" +# 12183 "parser_cocci_menhir.ml" ) = Obj.magic ty1 in let ty : ( # 49 "parser_cocci_menhir.mly" (Data.clt) -# 12154 "parser_cocci_menhir.ml" +# 12188 "parser_cocci_menhir.ml" ) = Obj.magic ty in let _startpos = _startpos_ty_ in let _endpos = _endpos_ty1_ in let _v : 'tv_generic_ctype_full = let q = -# 586 "parser_cocci_menhir.mly" +# 595 "parser_cocci_menhir.mly" ( function x -> x ) -# 12162 "parser_cocci_menhir.ml" +# 12196 "parser_cocci_menhir.ml" in -# 469 "parser_cocci_menhir.mly" +# 478 "parser_cocci_menhir.mly" ( q (Ast0.wrap (Ast0.BaseType (Ast.LongLongType, [P.clt2mcode "long" ty;P.clt2mcode "long" ty1]))) ) -# 12171 "parser_cocci_menhir.ml" +# 12205 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12194,14 +12228,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 12198 "parser_cocci_menhir.ml" +# 12232 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_i_ in let _v : 'tv_generic_ctype_full = -# 474 "parser_cocci_menhir.mly" +# 483 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) ) -# 12205 "parser_cocci_menhir.ml" +# 12239 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12229,9 +12263,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_s_ in let _endpos = _endpos_i_ in let _v : 'tv_generic_ctype_full = -# 476 "parser_cocci_menhir.mly" +# 485 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) ) -# 12235 "parser_cocci_menhir.ml" +# 12269 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12267,13 +12301,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let r : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 12271 "parser_cocci_menhir.ml" +# 12305 "parser_cocci_menhir.ml" ) = Obj.magic r in let d : 'tv_struct_decl_list = Obj.magic d in let l : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 12277 "parser_cocci_menhir.ml" +# 12311 "parser_cocci_menhir.ml" ) = Obj.magic l in let s : 'tv_struct_or_union = Obj.magic s in let _startpos = _startpos_s_ in @@ -12282,17 +12316,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 12286 "parser_cocci_menhir.ml" +# 12320 "parser_cocci_menhir.ml" in -# 479 "parser_cocci_menhir.mly" +# 488 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), P.clt2mcode "{" l, d, P.clt2mcode "}" r)) ) -# 12296 "parser_cocci_menhir.ml" +# 12330 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12333,13 +12367,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let r : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 12337 "parser_cocci_menhir.ml" +# 12371 "parser_cocci_menhir.ml" ) = Obj.magic r in let d : 'tv_struct_decl_list = Obj.magic d in let l : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 12343 "parser_cocci_menhir.ml" +# 12377 "parser_cocci_menhir.ml" ) = Obj.magic l in let x0 : 'tv_ident = Obj.magic x0 in let s : 'tv_struct_or_union = Obj.magic s in @@ -12350,17 +12384,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 12354 "parser_cocci_menhir.ml" +# 12388 "parser_cocci_menhir.ml" in -# 479 "parser_cocci_menhir.mly" +# 488 "parser_cocci_menhir.mly" ( (if i = None && !Data.in_iso then failwith "structures must be named in the iso file"); Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)), P.clt2mcode "{" l, d, P.clt2mcode "}" r)) ) -# 12364 "parser_cocci_menhir.ml" +# 12398 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12396,29 +12430,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let r : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 12400 "parser_cocci_menhir.ml" +# 12434 "parser_cocci_menhir.ml" ) = Obj.magic r in let d : 'tv_struct_decl_list = Obj.magic d in let l : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 12406 "parser_cocci_menhir.ml" +# 12440 "parser_cocci_menhir.ml" ) = Obj.magic l in let s : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 12411 "parser_cocci_menhir.ml" +# 12445 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_r_ in let _v : 'tv_generic_ctype_full = -# 485 "parser_cocci_menhir.mly" +# 494 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = s in let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in Ast0.wrap (Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) ) -# 12422 "parser_cocci_menhir.ml" +# 12456 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12448,24 +12482,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p : ( # 59 "parser_cocci_menhir.mly" (string * Data.clt) -# 12452 "parser_cocci_menhir.ml" +# 12486 "parser_cocci_menhir.ml" ) = Obj.magic p in let r : ( # 47 "parser_cocci_menhir.mly" (string) -# 12457 "parser_cocci_menhir.ml" +# 12491 "parser_cocci_menhir.ml" ) = Obj.magic r in let _startpos = _startpos_r_ in let _endpos = _endpos_p_ in let _v : 'tv_generic_ctype_full = -# 491 "parser_cocci_menhir.mly" +# 500 "parser_cocci_menhir.mly" ( let nm = (r,P.id2name p) in (* this is only possible when we are in a metavar decl. Otherwise, it will be represented already as a MetaType *) let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p), Ast0.Impure (*will be ignored*))) ) -# 12469 "parser_cocci_menhir.ml" +# 12503 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12486,14 +12520,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p : ( # 59 "parser_cocci_menhir.mly" (string * Data.clt) -# 12490 "parser_cocci_menhir.ml" +# 12524 "parser_cocci_menhir.ml" ) = Obj.magic p in let _startpos = _startpos_p_ in let _endpos = _endpos_p_ in let _v : 'tv_generic_ctype_full = -# 498 "parser_cocci_menhir.mly" +# 507 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) ) -# 12497 "parser_cocci_menhir.ml" +# 12531 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12519,12 +12553,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 12523 "parser_cocci_menhir.ml" +# 12557 "parser_cocci_menhir.ml" ) = Obj.magic p in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 12528 "parser_cocci_menhir.ml" +# 12562 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_p_ in @@ -12533,22 +12567,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 580 "parser_cocci_menhir.mly" +# 589 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,x)) ) -# 12539 "parser_cocci_menhir.ml" +# 12573 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 12545 "parser_cocci_menhir.ml" +# 12579 "parser_cocci_menhir.ml" in -# 500 "parser_cocci_menhir.mly" +# 509 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in q (Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure))) ) -# 12552 "parser_cocci_menhir.ml" +# 12586 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12574,12 +12608,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 12578 "parser_cocci_menhir.ml" +# 12612 "parser_cocci_menhir.ml" ) = Obj.magic p in let r00 : ( # 51 "parser_cocci_menhir.mly" (Data.clt) -# 12583 "parser_cocci_menhir.ml" +# 12617 "parser_cocci_menhir.ml" ) = Obj.magic r00 in let _startpos = _startpos_r00_ in let _endpos = _endpos_p_ in @@ -12588,22 +12622,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s = let r = r0 in -# 582 "parser_cocci_menhir.mly" +# 591 "parser_cocci_menhir.mly" ( function x -> Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,x)) ) -# 12594 "parser_cocci_menhir.ml" +# 12628 "parser_cocci_menhir.ml" in -# 585 "parser_cocci_menhir.mly" +# 594 "parser_cocci_menhir.mly" ( function x -> s (Some x) ) -# 12600 "parser_cocci_menhir.ml" +# 12634 "parser_cocci_menhir.ml" in -# 500 "parser_cocci_menhir.mly" +# 509 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in q (Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure))) ) -# 12607 "parser_cocci_menhir.ml" +# 12641 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12624,22 +12658,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let p : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 12628 "parser_cocci_menhir.ml" +# 12662 "parser_cocci_menhir.ml" ) = Obj.magic p in let _startpos = _startpos_p_ in let _endpos = _endpos_p_ in let _v : 'tv_generic_ctype_full = let q = -# 586 "parser_cocci_menhir.mly" +# 595 "parser_cocci_menhir.mly" ( function x -> x ) -# 12636 "parser_cocci_menhir.ml" +# 12670 "parser_cocci_menhir.ml" in -# 500 "parser_cocci_menhir.mly" +# 509 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = p in q (Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure))) ) -# 12643 "parser_cocci_menhir.ml" +# 12677 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12661,9 +12695,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_ident = -# 1496 "parser_cocci_menhir.mly" +# 1509 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) ) -# 12667 "parser_cocci_menhir.ml" +# 12701 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12684,15 +12718,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 61 "parser_cocci_menhir.mly" (Parse_aux.idinfo) -# 12688 "parser_cocci_menhir.ml" +# 12722 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_ident = -# 1498 "parser_cocci_menhir.mly" +# 1511 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) ) -# 12696 "parser_cocci_menhir.ml" +# 12730 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12714,9 +12748,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_i_ in let _v : 'tv_ident_or_const = -# 1450 "parser_cocci_menhir.mly" +# 1463 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i)))) ) -# 12720 "parser_cocci_menhir.ml" +# 12754 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12737,15 +12771,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 12741 "parser_cocci_menhir.ml" +# 12775 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_ident_or_const = -# 1452 "parser_cocci_menhir.mly" +# 1465 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 12749 "parser_cocci_menhir.ml" +# 12783 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12770,14 +12804,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 12774 "parser_cocci_menhir.ml" +# 12808 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_incl = -# 253 "parser_cocci_menhir.mly" +# 257 "parser_cocci_menhir.mly" ( Common.Left(P.id2name _2) ) -# 12781 "parser_cocci_menhir.ml" +# 12815 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12802,14 +12836,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 79 "parser_cocci_menhir.mly" (string) -# 12806 "parser_cocci_menhir.ml" +# 12840 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_incl = -# 254 "parser_cocci_menhir.mly" +# 258 "parser_cocci_menhir.mly" ( Common.Right _2 ) -# 12813 "parser_cocci_menhir.ml" +# 12847 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12837,11 +12871,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 146 "parser_cocci_menhir.mly" ((string,string) Common.either list) -# 12841 "parser_cocci_menhir.ml" +# 12875 "parser_cocci_menhir.ml" ) = -# 249 "parser_cocci_menhir.mly" +# 253 "parser_cocci_menhir.mly" ( _1 ) -# 12845 "parser_cocci_menhir.ml" +# 12879 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12869,11 +12903,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 146 "parser_cocci_menhir.mly" ((string,string) Common.either list) -# 12873 "parser_cocci_menhir.ml" +# 12907 "parser_cocci_menhir.ml" ) = -# 250 "parser_cocci_menhir.mly" +# 254 "parser_cocci_menhir.mly" ( _1 ) -# 12877 "parser_cocci_menhir.ml" +# 12911 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12894,12 +12928,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 80 "parser_cocci_menhir.mly" (string * Data.clt) -# 12898 "parser_cocci_menhir.ml" +# 12932 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_includes = -# 629 "parser_cocci_menhir.mly" +# 638 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Include(P.clt2mcode "#include" (P.drop_aft (P.id2clt _1)), let (arity,ln,lln,offset,col,strbef,straft,pos) = @@ -12909,7 +12943,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct P.clt2mcode (Ast.Local (Parse_aux.str2inc (P.id2name _1))) (P.drop_bef clt))) ) -# 12913 "parser_cocci_menhir.ml" +# 12947 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12930,12 +12964,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 80 "parser_cocci_menhir.mly" (string * Data.clt) -# 12934 "parser_cocci_menhir.ml" +# 12968 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_includes = -# 639 "parser_cocci_menhir.mly" +# 648 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.Include(P.clt2mcode "#include" (P.drop_aft (P.id2clt _1)), let (arity,ln,lln,offset,col,strbef,straft,pos) = @@ -12945,7 +12979,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct P.clt2mcode (Ast.NonLocal (Parse_aux.str2inc (P.id2name _1))) (P.drop_bef clt))) ) -# 12949 "parser_cocci_menhir.ml" +# 12983 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -12977,10 +13011,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_d_ in let _endpos = _endpos__3_ in let _v : 'tv_includes = -# 649 "parser_cocci_menhir.mly" +# 658 "parser_cocci_menhir.mly" ( let ty = Ast0.wrap(Ast0.TopExp(Ast0.wrap(Ast0.TypeExp(t)))) in d (Ast0.wrap(Ast0.DOTS([ty]))) ) -# 12984 "parser_cocci_menhir.ml" +# 13018 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13012,7 +13046,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_includes = -# 652 "parser_cocci_menhir.mly" +# 661 "parser_cocci_menhir.mly" ( let body = match b with [e] -> @@ -13022,7 +13056,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | _ -> b) | _ -> b in _1 (Ast0.wrap(Ast0.DOTS(body))) ) -# 13026 "parser_cocci_menhir.ml" +# 13060 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13044,9 +13078,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_initialize = -# 1065 "parser_cocci_menhir.mly" +# 1074 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitExpr(_1)) ) -# 13050 "parser_cocci_menhir.ml" +# 13084 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13077,20 +13111,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 13081 "parser_cocci_menhir.ml" +# 13115 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_initialize_list = Obj.magic _2 in let _1 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 13087 "parser_cocci_menhir.ml" +# 13121 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize = -# 1067 "parser_cocci_menhir.mly" +# 1076 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) ) -# 13094 "parser_cocci_menhir.ml" +# 13128 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13116,21 +13150,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 13120 "parser_cocci_menhir.ml" +# 13154 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 13125 "parser_cocci_menhir.ml" +# 13159 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_initialize = -# 1069 "parser_cocci_menhir.mly" +# 1078 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.InitList(P.clt2mcode "{" _1,Ast0.wrap(Ast0.DOTS []), P.clt2mcode "}" _2)) ) -# 13134 "parser_cocci_menhir.ml" +# 13168 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13151,15 +13185,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 65 "parser_cocci_menhir.mly" (Parse_aux.info) -# 13155 "parser_cocci_menhir.ml" +# 13189 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_initialize = -# 1073 "parser_cocci_menhir.mly" +# 1082 "parser_cocci_menhir.mly" (let (nm,pure,clt) = _1 in Ast0.wrap(Ast0.MetaInit(P.clt2mcode nm clt,pure)) ) -# 13163 "parser_cocci_menhir.ml" +# 13197 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13181,9 +13215,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_initialize2 = -# 1079 "parser_cocci_menhir.mly" +# 1088 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitExpr(_1)) ) -# 13187 "parser_cocci_menhir.ml" +# 13221 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13214,20 +13248,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 13218 "parser_cocci_menhir.ml" +# 13252 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_initialize_list = Obj.magic _2 in let _1 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 13224 "parser_cocci_menhir.ml" +# 13258 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize2 = -# 1081 "parser_cocci_menhir.mly" +# 1090 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) ) -# 13231 "parser_cocci_menhir.ml" +# 13265 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13253,21 +13287,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 13257 "parser_cocci_menhir.ml" +# 13291 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 13262 "parser_cocci_menhir.ml" +# 13296 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_initialize2 = -# 1083 "parser_cocci_menhir.mly" +# 1092 "parser_cocci_menhir.mly" ( Ast0.wrap (Ast0.InitList(P.clt2mcode "{" _1,Ast0.wrap(Ast0.DOTS []), P.clt2mcode "}" _2)) ) -# 13271 "parser_cocci_menhir.ml" +# 13305 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13299,15 +13333,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 13303 "parser_cocci_menhir.ml" +# 13337 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_list_designator_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize2 = -# 1088 "parser_cocci_menhir.mly" +# 1097 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitGccExt(_1,P.clt2mcode "=" _2,_3)) ) -# 13311 "parser_cocci_menhir.ml" +# 13345 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13339,15 +13373,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 13343 "parser_cocci_menhir.ml" +# 13377 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize2 = -# 1090 "parser_cocci_menhir.mly" +# 1099 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitGccName(_1,P.clt2mcode ":" _2,_3)) ) -# 13351 "parser_cocci_menhir.ml" +# 13385 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13369,9 +13403,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_initialize_list = -# 1102 "parser_cocci_menhir.mly" +# 1111 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1)) ) -# 13375 "parser_cocci_menhir.ml" +# 13409 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13397,15 +13431,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 13401 "parser_cocci_menhir.ml" +# 13435 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_initialize2 = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_initialize_list_start = -# 1105 "parser_cocci_menhir.mly" +# 1114 "parser_cocci_menhir.mly" ( [_1;Ast0.wrap(Ast0.IComma(P.clt2mcode "," _2))] ) -# 13409 "parser_cocci_menhir.ml" +# 13443 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13437,15 +13471,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 13441 "parser_cocci_menhir.ml" +# 13475 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_initialize2 = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_initialize_list_start = -# 1107 "parser_cocci_menhir.mly" +# 1116 "parser_cocci_menhir.mly" ( _1::Ast0.wrap(Ast0.IComma(P.clt2mcode "," _2))::_3 ) -# 13449 "parser_cocci_menhir.ml" +# 13483 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13473,10 +13507,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_d_ in let _endpos = _endpos_r_ in let _v : 'tv_initialize_list_start = -# 1110 "parser_cocci_menhir.mly" +# 1119 "parser_cocci_menhir.mly" ( (P.mkidots "..." d):: (List.concat(List.map (function x -> x (P.mkidots "...")) r)) ) -# 13480 "parser_cocci_menhir.ml" +# 13514 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13496,9 +13530,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_invalid = -# 1203 "parser_cocci_menhir.mly" +# 1212 "parser_cocci_menhir.mly" ( raise (Semantic_cocci.Semantic "not matchable") ) -# 13502 "parser_cocci_menhir.ml" +# 13536 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13513,9 +13547,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_is_expression = -# 245 "parser_cocci_menhir.mly" +# 249 "parser_cocci_menhir.mly" ( false ) -# 13519 "parser_cocci_menhir.ml" +# 13553 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13535,9 +13569,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_is_expression = -# 246 "parser_cocci_menhir.mly" +# 250 "parser_cocci_menhir.mly" ( true ) -# 13541 "parser_cocci_menhir.ml" +# 13575 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13563,9 +13597,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_ctype_ = -# 1847 "parser_cocci_menhir.mly" +# 1860 "parser_cocci_menhir.mly" ( Common.Left t ) -# 13569 "parser_cocci_menhir.ml" +# 13603 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13591,9 +13625,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_ctype_ = -# 1848 "parser_cocci_menhir.mly" +# 1861 "parser_cocci_menhir.mly" ( Common.Right t ) -# 13597 "parser_cocci_menhir.ml" +# 13631 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13619,9 +13653,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_decl_var_ = -# 1847 "parser_cocci_menhir.mly" +# 1860 "parser_cocci_menhir.mly" ( Common.Left t ) -# 13625 "parser_cocci_menhir.ml" +# 13659 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13647,9 +13681,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_decl_var_ = -# 1848 "parser_cocci_menhir.mly" +# 1861 "parser_cocci_menhir.mly" ( Common.Right t ) -# 13653 "parser_cocci_menhir.ml" +# 13687 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13675,9 +13709,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_dexpr_ = -# 1847 "parser_cocci_menhir.mly" +# 1860 "parser_cocci_menhir.mly" ( Common.Left t ) -# 13681 "parser_cocci_menhir.ml" +# 13715 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13703,9 +13737,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_dexpr_ = -# 1848 "parser_cocci_menhir.mly" +# 1861 "parser_cocci_menhir.mly" ( Common.Right t ) -# 13709 "parser_cocci_menhir.ml" +# 13743 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13731,9 +13765,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_nest_start_ = -# 1847 "parser_cocci_menhir.mly" +# 1860 "parser_cocci_menhir.mly" ( Common.Left t ) -# 13737 "parser_cocci_menhir.ml" +# 13771 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13759,9 +13793,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_nest_start_ = -# 1848 "parser_cocci_menhir.mly" +# 1861 "parser_cocci_menhir.mly" ( Common.Right t ) -# 13765 "parser_cocci_menhir.ml" +# 13799 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13787,9 +13821,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_single_statement_ = -# 1847 "parser_cocci_menhir.mly" +# 1860 "parser_cocci_menhir.mly" ( Common.Left t ) -# 13793 "parser_cocci_menhir.ml" +# 13827 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13815,9 +13849,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_t_ in let _v : 'tv_iso_single_statement_ = -# 1848 "parser_cocci_menhir.mly" +# 1861 "parser_cocci_menhir.mly" ( Common.Right t ) -# 13821 "parser_cocci_menhir.ml" +# 13855 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13855,11 +13889,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 162 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 13859 "parser_cocci_menhir.ml" +# 13893 "parser_cocci_menhir.ml" ) = -# 1819 "parser_cocci_menhir.mly" +# 1832 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.ExprTag x) e1 el ) -# 13863 "parser_cocci_menhir.ml" +# 13897 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13897,11 +13931,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 162 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 13901 "parser_cocci_menhir.ml" +# 13935 "parser_cocci_menhir.ml" ) = -# 1821 "parser_cocci_menhir.mly" +# 1834 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.ArgExprTag x) e1 el ) -# 13905 "parser_cocci_menhir.ml" +# 13939 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13939,11 +13973,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 162 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 13943 "parser_cocci_menhir.ml" +# 13977 "parser_cocci_menhir.ml" ) = -# 1823 "parser_cocci_menhir.mly" +# 1836 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.TestExprTag x) e1 el ) -# 13947 "parser_cocci_menhir.ml" +# 13981 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -13981,11 +14015,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 162 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 13985 "parser_cocci_menhir.ml" +# 14019 "parser_cocci_menhir.ml" ) = -# 1825 "parser_cocci_menhir.mly" +# 1838 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.StmtTag x) s1 sl ) -# 13989 "parser_cocci_menhir.ml" +# 14023 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14023,11 +14057,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 162 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 14027 "parser_cocci_menhir.ml" +# 14061 "parser_cocci_menhir.ml" ) = -# 1827 "parser_cocci_menhir.mly" +# 1840 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.TypeCTag x) t1 tl ) -# 14031 "parser_cocci_menhir.ml" +# 14065 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14065,11 +14099,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 162 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 14069 "parser_cocci_menhir.ml" +# 14103 "parser_cocci_menhir.ml" ) = -# 1829 "parser_cocci_menhir.mly" +# 1842 "parser_cocci_menhir.mly" ( P.iso_adjust (function x -> Ast0.DotsStmtTag x) e1 el ) -# 14073 "parser_cocci_menhir.ml" +# 14107 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14107,9 +14141,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 162 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 14111 "parser_cocci_menhir.ml" +# 14145 "parser_cocci_menhir.ml" ) = -# 1831 "parser_cocci_menhir.mly" +# 1844 "parser_cocci_menhir.mly" ( let check_one = function [x] -> x | _ -> @@ -14124,7 +14158,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | Common.Right x -> Common.Right(check_one x)) dl in P.iso_adjust (function x -> Ast0.DeclTag x) d1 dl ) -# 14128 "parser_cocci_menhir.ml" +# 14162 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14148,11 +14182,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 165 "parser_cocci_menhir.mly" ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list) -# 14152 "parser_cocci_menhir.ml" +# 14186 "parser_cocci_menhir.ml" ) = # 182 "parser_cocci_menhir.mly" ( m "" ) -# 14156 "parser_cocci_menhir.ml" +# 14190 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14180,11 +14214,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 149 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 14184 "parser_cocci_menhir.ml" +# 14218 "parser_cocci_menhir.ml" ) = # 197 "parser_cocci_menhir.mly" ( P.make_iso_rule_name_result (P.id2name nm) ) -# 14188 "parser_cocci_menhir.ml" +# 14222 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14205,14 +14239,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 59 "parser_cocci_menhir.mly" (string * Data.clt) -# 14209 "parser_cocci_menhir.ml" +# 14243 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_iter_ident = -# 1510 "parser_cocci_menhir.mly" +# 1523 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) ) -# 14216 "parser_cocci_menhir.ml" +# 14250 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14233,15 +14267,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 62 "parser_cocci_menhir.mly" (Parse_aux.idinfo) -# 14237 "parser_cocci_menhir.ml" +# 14271 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_iter_ident = -# 1512 "parser_cocci_menhir.mly" +# 1525 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) ) -# 14245 "parser_cocci_menhir.ml" +# 14279 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14258,7 +14292,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_TMul_ = # 114 "standard.mly" ( [] ) -# 14262 "parser_cocci_menhir.ml" +# 14296 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14285,14 +14319,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let x : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 14289 "parser_cocci_menhir.ml" +# 14323 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : 'tv_list_TMul_ = # 116 "standard.mly" ( x :: xs ) -# 14296 "parser_cocci_menhir.ml" +# 14330 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14309,7 +14343,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_array_dec_ = # 114 "standard.mly" ( [] ) -# 14313 "parser_cocci_menhir.ml" +# 14347 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14339,7 +14373,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_array_dec_ = # 116 "standard.mly" ( x :: xs ) -# 14343 "parser_cocci_menhir.ml" +# 14377 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14356,7 +14390,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_case_line_ = # 114 "standard.mly" ( [] ) -# 14360 "parser_cocci_menhir.ml" +# 14394 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14386,7 +14420,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_case_line_ = # 116 "standard.mly" ( x :: xs ) -# 14390 "parser_cocci_menhir.ml" +# 14424 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14403,7 +14437,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_comma_decls_TEllipsis_decl__ = # 114 "standard.mly" ( [] ) -# 14407 "parser_cocci_menhir.ml" +# 14441 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14433,7 +14467,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_comma_decls_TEllipsis_decl__ = # 116 "standard.mly" ( x :: xs ) -# 14437 "parser_cocci_menhir.ml" +# 14471 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14450,7 +14484,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = # 114 "standard.mly" ( [] ) -# 14454 "parser_cocci_menhir.ml" +# 14488 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14480,7 +14514,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = # 116 "standard.mly" ( x :: xs ) -# 14484 "parser_cocci_menhir.ml" +# 14518 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14497,7 +14531,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_designator_ = # 114 "standard.mly" ( [] ) -# 14501 "parser_cocci_menhir.ml" +# 14535 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14527,7 +14561,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_designator_ = # 116 "standard.mly" ( x :: xs ) -# 14531 "parser_cocci_menhir.ml" +# 14565 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14544,7 +14578,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_dp_comma_args_TEllipsis__ = # 114 "standard.mly" ( [] ) -# 14548 "parser_cocci_menhir.ml" +# 14582 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14574,7 +14608,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_dp_comma_args_TEllipsis__ = # 116 "standard.mly" ( x :: xs ) -# 14578 "parser_cocci_menhir.ml" +# 14612 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14591,7 +14625,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_incl_ = # 114 "standard.mly" ( [] ) -# 14595 "parser_cocci_menhir.ml" +# 14629 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14621,7 +14655,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_incl_ = # 116 "standard.mly" ( x :: xs ) -# 14625 "parser_cocci_menhir.ml" +# 14659 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14638,7 +14672,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_ctype__ = # 114 "standard.mly" ( [] ) -# 14642 "parser_cocci_menhir.ml" +# 14676 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14668,7 +14702,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_ctype__ = # 116 "standard.mly" ( x :: xs ) -# 14672 "parser_cocci_menhir.ml" +# 14706 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14685,7 +14719,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_decl_var__ = # 114 "standard.mly" ( [] ) -# 14689 "parser_cocci_menhir.ml" +# 14723 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14715,7 +14749,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_decl_var__ = # 116 "standard.mly" ( x :: xs ) -# 14719 "parser_cocci_menhir.ml" +# 14753 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14732,7 +14766,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_dexpr__ = # 114 "standard.mly" ( [] ) -# 14736 "parser_cocci_menhir.ml" +# 14770 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14762,7 +14796,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_dexpr__ = # 116 "standard.mly" ( x :: xs ) -# 14766 "parser_cocci_menhir.ml" +# 14800 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14779,7 +14813,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_nest_start__ = # 114 "standard.mly" ( [] ) -# 14783 "parser_cocci_menhir.ml" +# 14817 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14809,7 +14843,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_nest_start__ = # 116 "standard.mly" ( x :: xs ) -# 14813 "parser_cocci_menhir.ml" +# 14847 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14826,7 +14860,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_single_statement__ = # 114 "standard.mly" ( [] ) -# 14830 "parser_cocci_menhir.ml" +# 14864 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14856,7 +14890,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_iso_single_statement__ = # 116 "standard.mly" ( x :: xs ) -# 14860 "parser_cocci_menhir.ml" +# 14894 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14873,7 +14907,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_ctype__ = # 114 "standard.mly" ( [] ) -# 14877 "parser_cocci_menhir.ml" +# 14911 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14903,7 +14937,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_ctype__ = # 116 "standard.mly" ( x :: xs ) -# 14907 "parser_cocci_menhir.ml" +# 14941 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14920,7 +14954,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_eexpr__ = # 114 "standard.mly" ( [] ) -# 14924 "parser_cocci_menhir.ml" +# 14958 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14950,7 +14984,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_eexpr__ = # 116 "standard.mly" ( x :: xs ) -# 14954 "parser_cocci_menhir.ml" +# 14988 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14967,7 +15001,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_fun_after_dots_or__ = # 114 "standard.mly" ( [] ) -# 14971 "parser_cocci_menhir.ml" +# 15005 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -14997,7 +15031,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_fun_after_dots_or__ = # 116 "standard.mly" ( x :: xs ) -# 15001 "parser_cocci_menhir.ml" +# 15035 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15014,7 +15048,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_fun_start__ = # 114 "standard.mly" ( [] ) -# 15018 "parser_cocci_menhir.ml" +# 15052 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15044,7 +15078,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_fun_start__ = # 116 "standard.mly" ( x :: xs ) -# 15048 "parser_cocci_menhir.ml" +# 15082 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15061,7 +15095,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_rule_elem_statement__ = # 114 "standard.mly" ( [] ) -# 15065 "parser_cocci_menhir.ml" +# 15099 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15091,7 +15125,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_rule_elem_statement__ = # 116 "standard.mly" ( x :: xs ) -# 15095 "parser_cocci_menhir.ml" +# 15129 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15108,7 +15142,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_statement__ = # 114 "standard.mly" ( [] ) -# 15112 "parser_cocci_menhir.ml" +# 15146 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15138,7 +15172,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_mzl_statement__ = # 116 "standard.mly" ( x :: xs ) -# 15142 "parser_cocci_menhir.ml" +# 15176 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15155,7 +15189,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_pair_edots_when_TEllipsis_eexpr__dexpr__ = # 114 "standard.mly" ( [] ) -# 15159 "parser_cocci_menhir.ml" +# 15193 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15194,13 +15228,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 70 "standard.mly" ( (x, y) ) -# 15198 "parser_cocci_menhir.ml" +# 15232 "parser_cocci_menhir.ml" in # 116 "standard.mly" ( x :: xs ) -# 15204 "parser_cocci_menhir.ml" +# 15238 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15217,7 +15251,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_whenppdecs_ = # 114 "standard.mly" ( [] ) -# 15221 "parser_cocci_menhir.ml" +# 15255 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15247,7 +15281,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_list_whenppdecs_ = # 116 "standard.mly" ( x :: xs ) -# 15251 "parser_cocci_menhir.ml" +# 15285 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15264,7 +15298,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_choose_iso_ = # 57 "standard.mly" ( [] ) -# 15268 "parser_cocci_menhir.ml" +# 15302 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15288,7 +15322,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_choose_iso_ = # 59 "standard.mly" ( x ) -# 15292 "parser_cocci_menhir.ml" +# 15326 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15305,7 +15339,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_disable_ = # 57 "standard.mly" ( [] ) -# 15309 "parser_cocci_menhir.ml" +# 15343 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15329,7 +15363,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_disable_ = # 59 "standard.mly" ( x ) -# 15333 "parser_cocci_menhir.ml" +# 15367 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15346,7 +15380,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_error_words_ = # 57 "standard.mly" ( [] ) -# 15350 "parser_cocci_menhir.ml" +# 15384 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15370,7 +15404,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_error_words_ = # 59 "standard.mly" ( x ) -# 15374 "parser_cocci_menhir.ml" +# 15408 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15387,7 +15421,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_filespec_ = # 57 "standard.mly" ( [] ) -# 15391 "parser_cocci_menhir.ml" +# 15425 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15411,7 +15445,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_filespec_ = # 59 "standard.mly" ( x ) -# 15415 "parser_cocci_menhir.ml" +# 15449 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15428,7 +15462,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_minus_start_ = # 57 "standard.mly" ( [] ) -# 15432 "parser_cocci_menhir.ml" +# 15466 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15452,7 +15486,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_minus_start_ = # 59 "standard.mly" ( x ) -# 15456 "parser_cocci_menhir.ml" +# 15490 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15469,7 +15503,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_ceq_ = # 57 "standard.mly" ( [] ) -# 15473 "parser_cocci_menhir.ml" +# 15507 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15493,7 +15527,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_ceq_ = # 59 "standard.mly" ( x ) -# 15497 "parser_cocci_menhir.ml" +# 15531 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15510,7 +15544,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_eq_ = # 57 "standard.mly" ( [] ) -# 15514 "parser_cocci_menhir.ml" +# 15548 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15534,7 +15568,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_eq_ = # 59 "standard.mly" ( x ) -# 15538 "parser_cocci_menhir.ml" +# 15572 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15551,7 +15585,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_eqe_ = # 57 "standard.mly" ( [] ) -# 15555 "parser_cocci_menhir.ml" +# 15589 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15575,7 +15609,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_eqe_ = # 59 "standard.mly" ( x ) -# 15579 "parser_cocci_menhir.ml" +# 15613 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15592,7 +15626,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_pos_ = # 57 "standard.mly" ( [] ) -# 15596 "parser_cocci_menhir.ml" +# 15630 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15616,7 +15650,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_not_pos_ = # 59 "standard.mly" ( x ) -# 15620 "parser_cocci_menhir.ml" +# 15654 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15633,7 +15667,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_plus_start_ = # 57 "standard.mly" ( [] ) -# 15637 "parser_cocci_menhir.ml" +# 15671 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15657,7 +15691,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_loption_plus_start_ = # 59 "standard.mly" ( x ) -# 15661 "parser_cocci_menhir.ml" +# 15695 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15679,9 +15713,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_t_ in let _v : 'tv_meta_exp_type = -# 444 "parser_cocci_menhir.mly" +# 453 "parser_cocci_menhir.mly" ( [Ast0_cocci.ast0_type_to_type t] ) -# 15685 "parser_cocci_menhir.ml" +# 15719 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15717,11 +15751,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_m_ in let _v : 'tv_meta_exp_type = -# 446 "parser_cocci_menhir.mly" +# 455 "parser_cocci_menhir.mly" ( List.map (function x -> P.ty_pointerify (Ast0_cocci.ast0_type_to_type x) m) t ) -# 15725 "parser_cocci_menhir.ml" +# 15759 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15752,14 +15786,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 47 "parser_cocci_menhir.mly" (string) -# 15756 "parser_cocci_menhir.ml" +# 15790 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_meta_ident = -# 1389 "parser_cocci_menhir.mly" +# 1398 "parser_cocci_menhir.mly" ( (Some _1,P.id2name _3) ) -# 15763 "parser_cocci_menhir.ml" +# 15797 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15783,68 +15817,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 157 "parser_cocci_menhir.mly" ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list) -# 15787 "parser_cocci_menhir.ml" +# 15821 "parser_cocci_menhir.ml" ) = # 181 "parser_cocci_menhir.mly" ( m (!Ast0.rule_name) ) -# 15791 "parser_cocci_menhir.ml" - in - _menhir_env.MenhirLib.EngineTypes.stack <- { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.semv = ids; - MenhirLib.EngineTypes.startp = _startpos_ids_; - MenhirLib.EngineTypes.endp = _endpos_ids_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.semv = ispure; - MenhirLib.EngineTypes.startp = _startpos_ispure_; - MenhirLib.EngineTypes.endp = _endpos_ispure_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = ar; - MenhirLib.EngineTypes.startp = _startpos_ar_; - MenhirLib.EngineTypes.endp = _endpos_ar_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - } = _menhir_stack in - let ids : 'tv_comma_list_pure_ident_or_meta_ident_ = Obj.magic ids in - let ispure : 'tv_pure = Obj.magic ispure in - let ar : 'tv_arity = Obj.magic ar in - let _startpos = _startpos_ar_ in - let _endpos = _endpos__6_ in - let _v : 'tv_metadec = let kindfn = - -# 305 "parser_cocci_menhir.mly" - ( (fun arity name pure check_meta -> - let tok = check_meta(Ast.MetaFreshIdDecl(arity,name)) in - !Data.add_id_meta name [] pure; tok) ) -# 15842 "parser_cocci_menhir.ml" - - in - -# 259 "parser_cocci_menhir.mly" - ( P.create_metadec ar ispure kindfn ids ) -# 15848 "parser_cocci_menhir.ml" +# 15825 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15887,17 +15864,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 309 "parser_cocci_menhir.mly" +# 318 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaParamDecl(arity,name)) in !Data.add_param_meta name pure; tok) ) -# 15895 "parser_cocci_menhir.ml" +# 15872 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 15901 "parser_cocci_menhir.ml" +# 15878 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -15944,17 +15921,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 313 "parser_cocci_menhir.mly" +# 322 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaParamListDecl(arity,name,None)) in !Data.add_paramlist_meta name None pure; tok) ) -# 15952 "parser_cocci_menhir.ml" +# 15929 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 15958 "parser_cocci_menhir.ml" +# 15935 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16001,17 +15978,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 317 "parser_cocci_menhir.mly" +# 326 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaExpListDecl(arity,name,None)) in !Data.add_explist_meta name None pure; tok) ) -# 16009 "parser_cocci_menhir.ml" +# 15986 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 16015 "parser_cocci_menhir.ml" +# 15992 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16054,17 +16031,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 321 "parser_cocci_menhir.mly" +# 330 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaTypeDecl(arity,name)) in !Data.add_type_meta name pure; tok) ) -# 16062 "parser_cocci_menhir.ml" +# 16039 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 16068 "parser_cocci_menhir.ml" +# 16045 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16107,17 +16084,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 325 "parser_cocci_menhir.mly" +# 334 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaInitDecl(arity,name)) in !Data.add_init_meta name pure; tok) ) -# 16115 "parser_cocci_menhir.ml" +# 16092 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 16121 "parser_cocci_menhir.ml" +# 16098 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16160,17 +16137,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 329 "parser_cocci_menhir.mly" +# 338 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaStmDecl(arity,name)) in !Data.add_stm_meta name pure; tok) ) -# 16168 "parser_cocci_menhir.ml" +# 16145 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 16174 "parser_cocci_menhir.ml" +# 16151 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16217,17 +16194,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 333 "parser_cocci_menhir.mly" +# 342 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaStmListDecl(arity,name)) in !Data.add_stmlist_meta name pure; tok) ) -# 16225 "parser_cocci_menhir.ml" +# 16202 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 16231 "parser_cocci_menhir.ml" +# 16208 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16270,18 +16247,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 337 "parser_cocci_menhir.mly" +# 346 "parser_cocci_menhir.mly" ( (fun arity (_,name) pure check_meta -> if arity = Ast.NONE && pure = Ast0.Impure then (!Data.add_type_name name; []) else raise (Semantic_cocci.Semantic "bad typedef")) ) -# 16279 "parser_cocci_menhir.ml" +# 16256 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 16285 "parser_cocci_menhir.ml" +# 16262 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16328,18 +16305,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 342 "parser_cocci_menhir.mly" +# 351 "parser_cocci_menhir.mly" ( (fun arity (_,name) pure check_meta -> if arity = Ast.NONE && pure = Ast0.Impure then (!Data.add_declarer_name name; []) else raise (Semantic_cocci.Semantic "bad declarer")) ) -# 16337 "parser_cocci_menhir.ml" +# 16314 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 16343 "parser_cocci_menhir.ml" +# 16320 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16386,18 +16363,63 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 347 "parser_cocci_menhir.mly" +# 356 "parser_cocci_menhir.mly" ( (fun arity (_,name) pure check_meta -> if arity = Ast.NONE && pure = Ast0.Impure then (!Data.add_iterator_name name; []) else raise (Semantic_cocci.Semantic "bad iterator")) ) -# 16395 "parser_cocci_menhir.ml" +# 16372 "parser_cocci_menhir.ml" in -# 259 "parser_cocci_menhir.mly" +# 263 "parser_cocci_menhir.mly" ( P.create_metadec ar ispure kindfn ids ) -# 16401 "parser_cocci_menhir.ml" +# 16378 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.semv = ids; + MenhirLib.EngineTypes.startp = _startpos_ids_; + MenhirLib.EngineTypes.endp = _endpos_ids_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_seed_ = Obj.magic ids in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : 'tv_metadec = let kindfn = + +# 312 "parser_cocci_menhir.mly" + ( (fun name check_meta seed -> + let tok = check_meta(Ast.MetaFreshIdDecl(name,seed)) in + !Data.add_fresh_id_meta name; tok) ) +# 16417 "parser_cocci_menhir.ml" + + in + +# 266 "parser_cocci_menhir.mly" + ( P.create_fresh_metadec kindfn ids ) +# 16423 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16440,17 +16462,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 355 "parser_cocci_menhir.mly" +# 364 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaIdDecl(arity,name)) in !Data.add_id_meta name constraints pure; tok) ) -# 16448 "parser_cocci_menhir.ml" +# 16470 "parser_cocci_menhir.ml" in -# 263 "parser_cocci_menhir.mly" +# 270 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16454 "parser_cocci_menhir.ml" +# 16476 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16493,17 +16515,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 359 "parser_cocci_menhir.mly" +# 368 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaFuncDecl(arity,name)) in !Data.add_func_meta name constraints pure; tok) ) -# 16501 "parser_cocci_menhir.ml" +# 16523 "parser_cocci_menhir.ml" in -# 263 "parser_cocci_menhir.mly" +# 270 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16507 "parser_cocci_menhir.ml" +# 16529 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16550,18 +16572,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__6_ in let _v : 'tv_metadec = let kindfn = -# 363 "parser_cocci_menhir.mly" +# 372 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaLocalFuncDecl(arity,name)) in !Data.add_local_func_meta name constraints pure; tok) ) -# 16559 "parser_cocci_menhir.ml" +# 16581 "parser_cocci_menhir.ml" in -# 263 "parser_cocci_menhir.mly" +# 270 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16565 "parser_cocci_menhir.ml" +# 16587 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16604,17 +16626,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 368 "parser_cocci_menhir.mly" +# 377 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaDeclarerDecl(arity,name)) in !Data.add_declarer_meta name constraints pure; tok) ) -# 16612 "parser_cocci_menhir.ml" +# 16634 "parser_cocci_menhir.ml" in -# 263 "parser_cocci_menhir.mly" +# 270 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16618 "parser_cocci_menhir.ml" +# 16640 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16657,17 +16679,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 372 "parser_cocci_menhir.mly" +# 381 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaIteratorDecl(arity,name)) in !Data.add_iterator_meta name constraints pure; tok) ) -# 16665 "parser_cocci_menhir.ml" +# 16687 "parser_cocci_menhir.ml" in -# 263 "parser_cocci_menhir.mly" +# 270 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16671 "parser_cocci_menhir.ml" +# 16693 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16710,17 +16732,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 378 "parser_cocci_menhir.mly" +# 387 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaErrDecl(arity,name)) in !Data.add_err_meta name constraints pure; tok) ) -# 16718 "parser_cocci_menhir.ml" +# 16740 "parser_cocci_menhir.ml" in -# 267 "parser_cocci_menhir.mly" +# 274 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16724 "parser_cocci_menhir.ml" +# 16746 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16773,11 +16795,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 16777 "parser_cocci_menhir.ml" +# 16799 "parser_cocci_menhir.ml" in -# 382 "parser_cocci_menhir.mly" +# 391 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> match l with None -> @@ -16786,13 +16808,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | Some _ -> !Data.add_local_idexp_meta ty name constraints pure; check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) ) -# 16790 "parser_cocci_menhir.ml" +# 16812 "parser_cocci_menhir.ml" in -# 267 "parser_cocci_menhir.mly" +# 274 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16796 "parser_cocci_menhir.ml" +# 16818 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16853,11 +16875,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 16857 "parser_cocci_menhir.ml" +# 16879 "parser_cocci_menhir.ml" in -# 382 "parser_cocci_menhir.mly" +# 391 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> match l with None -> @@ -16866,13 +16888,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | Some _ -> !Data.add_local_idexp_meta ty name constraints pure; check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) ) -# 16870 "parser_cocci_menhir.ml" +# 16892 "parser_cocci_menhir.ml" in -# 267 "parser_cocci_menhir.mly" +# 274 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16876 "parser_cocci_menhir.ml" +# 16898 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16929,7 +16951,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let m = m0 in let l = l0 in -# 391 "parser_cocci_menhir.mly" +# 400 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let ty = Some [P.ty_pointerify Type_cocci.Unknown m] in match l with @@ -16939,13 +16961,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct | Some _ -> !Data.add_local_idexp_meta ty name constraints pure; check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) ) -# 16943 "parser_cocci_menhir.ml" +# 16965 "parser_cocci_menhir.ml" in -# 267 "parser_cocci_menhir.mly" +# 274 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 16949 "parser_cocci_menhir.ml" +# 16971 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -16995,18 +17017,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_metadec = let kindfn = let m = m0 in -# 401 "parser_cocci_menhir.mly" +# 410 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let ty = Some [P.ty_pointerify Type_cocci.Unknown m] in let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in !Data.add_exp_meta ty name constraints pure; tok) ) -# 17004 "parser_cocci_menhir.ml" +# 17026 "parser_cocci_menhir.ml" in -# 267 "parser_cocci_menhir.mly" +# 274 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 17010 "parser_cocci_menhir.ml" +# 17032 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17060,18 +17082,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_metadec = let kindfn = let vl = vl0 in -# 406 "parser_cocci_menhir.mly" +# 415 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let ty = Some (List.map (function x -> Type_cocci.Array x) vl) in let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in !Data.add_exp_meta ty name constraints pure; tok) ) -# 17069 "parser_cocci_menhir.ml" +# 17091 "parser_cocci_menhir.ml" in -# 267 "parser_cocci_menhir.mly" +# 274 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 17075 "parser_cocci_menhir.ml" +# 17097 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17117,21 +17139,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 17121 "parser_cocci_menhir.ml" +# 17143 "parser_cocci_menhir.ml" in -# 411 "parser_cocci_menhir.mly" +# 420 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaConstDecl(arity,name,ty)) in !Data.add_const_meta ty name constraints pure; tok) ) -# 17129 "parser_cocci_menhir.ml" +# 17151 "parser_cocci_menhir.ml" in -# 267 "parser_cocci_menhir.mly" +# 274 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 17135 "parser_cocci_menhir.ml" +# 17157 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17185,21 +17207,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 17189 "parser_cocci_menhir.ml" +# 17211 "parser_cocci_menhir.ml" in -# 411 "parser_cocci_menhir.mly" +# 420 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaConstDecl(arity,name,ty)) in !Data.add_const_meta ty name constraints pure; tok) ) -# 17197 "parser_cocci_menhir.ml" +# 17219 "parser_cocci_menhir.ml" in -# 267 "parser_cocci_menhir.mly" +# 274 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 17203 "parser_cocci_menhir.ml" +# 17225 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17242,17 +17264,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _endpos = _endpos__5_ in let _v : 'tv_metadec = let kindfn = -# 417 "parser_cocci_menhir.mly" +# 426 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let tok = check_meta(Ast.MetaExpDecl(arity,name,None)) in !Data.add_exp_meta None name constraints pure; tok) ) -# 17250 "parser_cocci_menhir.ml" +# 17272 "parser_cocci_menhir.ml" in -# 271 "parser_cocci_menhir.mly" +# 278 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 17256 "parser_cocci_menhir.ml" +# 17278 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17298,7 +17320,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_metadec = let kindfn = let vl = vl0 in -# 421 "parser_cocci_menhir.mly" +# 430 "parser_cocci_menhir.mly" ( (fun arity name pure check_meta constraints -> let ty = Some vl in List.iter @@ -17318,13 +17340,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct constraints; let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in !Data.add_exp_meta ty name constraints pure; tok) ) -# 17322 "parser_cocci_menhir.ml" +# 17344 "parser_cocci_menhir.ml" in -# 271 "parser_cocci_menhir.mly" +# 278 "parser_cocci_menhir.mly" ( P.create_metadec_ne ar ispure kindfn ids ) -# 17328 "parser_cocci_menhir.ml" +# 17350 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17366,7 +17388,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ar_ in let _endpos = _endpos__5_ in let _v : 'tv_metadec = -# 277 "parser_cocci_menhir.mly" +# 284 "parser_cocci_menhir.mly" ( (if !Data.in_generating then failwith "position variables not allowed in a generated rule file"); let kindfn arity name pure check_meta constraints = @@ -17374,7 +17396,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let any = match a with None -> Ast.PER | Some _ -> Ast.ALL in !Data.add_pos_meta name constraints any; tok in P.create_metadec_ne ar false kindfn ids ) -# 17378 "parser_cocci_menhir.ml" +# 17400 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17434,14 +17456,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ar_ in let _endpos = _endpos__9_ in let _v : 'tv_metadec = -# 287 "parser_cocci_menhir.mly" +# 294 "parser_cocci_menhir.mly" ( P.create_len_metadec ar ispure (fun lenname arity name pure check_meta -> let tok = check_meta(Ast.MetaParamListDecl(arity,name,Some lenname)) in !Data.add_paramlist_meta name (Some lenname) pure; tok) id ids ) -# 17445 "parser_cocci_menhir.ml" +# 17467 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17501,14 +17523,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_ar_ in let _endpos = _endpos__9_ in let _v : 'tv_metadec = -# 296 "parser_cocci_menhir.mly" +# 303 "parser_cocci_menhir.mly" ( P.create_len_metadec ar ispure (fun lenname arity name pure check_meta -> let tok = check_meta(Ast.MetaExpListDecl(arity,name,Some lenname)) in !Data.add_explist_meta name (Some lenname) pure; tok) id ids ) -# 17512 "parser_cocci_menhir.ml" +# 17534 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17536,9 +17558,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_ctype_ctype_ = -# 1789 "parser_cocci_menhir.mly" +# 1802 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 17542 "parser_cocci_menhir.ml" +# 17564 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17566,9 +17588,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_eexpr_eexpr_ = -# 1789 "parser_cocci_menhir.mly" +# 1802 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 17572 "parser_cocci_menhir.ml" +# 17594 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17596,9 +17618,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_expr_eexpr_ = -# 1789 "parser_cocci_menhir.mly" +# 1802 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 17602 "parser_cocci_menhir.ml" +# 17624 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17626,9 +17648,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_fun_after_stm_fun_after_dots_or_ = -# 1789 "parser_cocci_menhir.mly" +# 1802 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 17632 "parser_cocci_menhir.ml" +# 17654 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17656,9 +17678,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_fun_start_fun_start_ = -# 1789 "parser_cocci_menhir.mly" +# 1802 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 17662 "parser_cocci_menhir.ml" +# 17684 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17686,9 +17708,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_rule_elem_statement_rule_elem_statement_ = -# 1789 "parser_cocci_menhir.mly" +# 1802 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 17692 "parser_cocci_menhir.ml" +# 17714 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17716,9 +17738,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_midzero_list_statement_statement_ = -# 1789 "parser_cocci_menhir.mly" +# 1802 "parser_cocci_menhir.mly" ( let (mids,code) = List.split b in (mids,(a::code)) ) -# 17722 "parser_cocci_menhir.ml" +# 17744 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17752,11 +17774,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_ew_ in let _v : 'tv_minus_body = -# 597 "parser_cocci_menhir.mly" +# 606 "parser_cocci_menhir.mly" ( match f@b@ew with [] -> raise (Semantic_cocci.Semantic "minus slice can't be empty") | code -> Top_level.top_level code ) -# 17760 "parser_cocci_menhir.ml" +# 17782 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17790,11 +17812,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_ew_ in let _v : 'tv_minus_exp_body = -# 611 "parser_cocci_menhir.mly" +# 620 "parser_cocci_menhir.mly" ( match f@[b]@ew with [] -> raise (Semantic_cocci.Semantic "minus slice can't be empty") | code -> Top_level.top_level code ) -# 17798 "parser_cocci_menhir.ml" +# 17820 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17822,11 +17844,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 137 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 17826 "parser_cocci_menhir.ml" +# 17848 "parser_cocci_menhir.ml" ) = # 177 "parser_cocci_menhir.mly" ( _1 ) -# 17830 "parser_cocci_menhir.ml" +# 17852 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17854,11 +17876,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 137 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 17858 "parser_cocci_menhir.ml" +# 17880 "parser_cocci_menhir.ml" ) = # 177 "parser_cocci_menhir.mly" ( m ) -# 17862 "parser_cocci_menhir.ml" +# 17884 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17886,11 +17908,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 137 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 17890 "parser_cocci_menhir.ml" +# 17912 "parser_cocci_menhir.ml" ) = # 178 "parser_cocci_menhir.mly" ( m ) -# 17894 "parser_cocci_menhir.ml" +# 17916 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17918,11 +17940,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 134 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 17922 "parser_cocci_menhir.ml" +# 17944 "parser_cocci_menhir.ml" ) = # 173 "parser_cocci_menhir.mly" ( _1 ) -# 17926 "parser_cocci_menhir.ml" +# 17948 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17950,11 +17972,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 134 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 17954 "parser_cocci_menhir.ml" +# 17976 "parser_cocci_menhir.ml" ) = # 173 "parser_cocci_menhir.mly" ( m ) -# 17958 "parser_cocci_menhir.ml" +# 17980 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -17982,11 +18004,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 134 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 17986 "parser_cocci_menhir.ml" +# 18008 "parser_cocci_menhir.ml" ) = # 174 "parser_cocci_menhir.mly" ( m ) -# 17990 "parser_cocci_menhir.ml" +# 18012 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18008,9 +18030,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_minus_start = -# 1598 "parser_cocci_menhir.mly" +# 1611 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.DECL(_1))] ) -# 18014 "parser_cocci_menhir.ml" +# 18036 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18032,9 +18054,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_minus_start = -# 1599 "parser_cocci_menhir.mly" +# 1612 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] ) -# 18038 "parser_cocci_menhir.ml" +# 18060 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18056,9 +18078,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_minus_start = -# 1600 "parser_cocci_menhir.mly" +# 1613 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] ) -# 18062 "parser_cocci_menhir.ml" +# 18084 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18080,9 +18102,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_minus_start = -# 1602 "parser_cocci_menhir.mly" +# 1615 "parser_cocci_menhir.mly" ( List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1 ) -# 18086 "parser_cocci_menhir.ml" +# 18108 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18109,14 +18131,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let a : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 18113 "parser_cocci_menhir.ml" +# 18135 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_ctype_ = -# 1792 "parser_cocci_menhir.mly" +# 1805 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 18120 "parser_cocci_menhir.ml" +# 18142 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18143,14 +18165,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let a : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 18147 "parser_cocci_menhir.ml" +# 18169 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_eexpr_ = -# 1792 "parser_cocci_menhir.mly" +# 1805 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 18154 "parser_cocci_menhir.ml" +# 18176 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18177,14 +18199,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let a : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 18181 "parser_cocci_menhir.ml" +# 18203 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_fun_after_dots_or_ = -# 1792 "parser_cocci_menhir.mly" +# 1805 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 18188 "parser_cocci_menhir.ml" +# 18210 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18211,14 +18233,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let a : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 18215 "parser_cocci_menhir.ml" +# 18237 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_fun_start_ = -# 1792 "parser_cocci_menhir.mly" +# 1805 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 18222 "parser_cocci_menhir.ml" +# 18244 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18245,14 +18267,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let a : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 18249 "parser_cocci_menhir.ml" +# 18271 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_rule_elem_statement_ = -# 1792 "parser_cocci_menhir.mly" +# 1805 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 18256 "parser_cocci_menhir.ml" +# 18278 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18279,14 +18301,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let a : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 18283 "parser_cocci_menhir.ml" +# 18305 "parser_cocci_menhir.ml" ) = Obj.magic a in let _startpos = _startpos_a_ in let _endpos = _endpos_b_ in let _v : 'tv_mzl_statement_ = -# 1792 "parser_cocci_menhir.mly" +# 1805 "parser_cocci_menhir.mly" ( (P.clt2mcode "|" a, b) ) -# 18290 "parser_cocci_menhir.ml" +# 18312 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18308,9 +18330,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_name_opt_decl = -# 830 "parser_cocci_menhir.mly" +# 839 "parser_cocci_menhir.mly" ( _1 ) -# 18314 "parser_cocci_menhir.ml" +# 18336 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18332,9 +18354,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_t_ in let _endpos = _endpos_t_ in let _v : 'tv_name_opt_decl = -# 831 "parser_cocci_menhir.mly" +# 840 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Param(t, None)) ) -# 18338 "parser_cocci_menhir.ml" +# 18360 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18385,41 +18407,41 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 18389 "parser_cocci_menhir.ml" +# 18411 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 18395 "parser_cocci_menhir.ml" +# 18417 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 18400 "parser_cocci_menhir.ml" +# 18422 "parser_cocci_menhir.ml" ) = Obj.magic rp in let s : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 18405 "parser_cocci_menhir.ml" +# 18427 "parser_cocci_menhir.ml" ) = Obj.magic s in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 18410 "parser_cocci_menhir.ml" +# 18432 "parser_cocci_menhir.ml" ) = Obj.magic lp in let t : 'tv_fn_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_rp1_ in let _v : 'tv_name_opt_decl = -# 834 "parser_cocci_menhir.mly" +# 843 "parser_cocci_menhir.mly" ( let fnptr = Ast0.wrap (Ast0.FunctionPointer (t,P.clt2mcode "(" lp,P.clt2mcode "*" s,P.clt2mcode ")" rp, P.clt2mcode "(" lp1,d,P.clt2mcode ")" rp1)) in Ast0.wrap(Ast0.Param(fnptr, None)) ) -# 18423 "parser_cocci_menhir.ml" +# 18445 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18447,9 +18469,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_dots = -# 1713 "parser_cocci_menhir.mly" +# 1726 "parser_cocci_menhir.mly" (_1@_2) -# 18453 "parser_cocci_menhir.ml" +# 18475 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18475,9 +18497,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_dots = -# 1714 "parser_cocci_menhir.mly" +# 1727 "parser_cocci_menhir.mly" (_2) -# 18481 "parser_cocci_menhir.ml" +# 18503 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18505,9 +18527,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_dots = -# 1715 "parser_cocci_menhir.mly" +# 1728 "parser_cocci_menhir.mly" ((Ast0.wrap(Ast0.Exp(_1)))::_2) -# 18511 "parser_cocci_menhir.ml" +# 18533 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18522,9 +18544,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_nest_after_exp = -# 1723 "parser_cocci_menhir.mly" +# 1736 "parser_cocci_menhir.mly" ([]) -# 18528 "parser_cocci_menhir.ml" +# 18550 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18552,9 +18574,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_exp = -# 1724 "parser_cocci_menhir.mly" +# 1737 "parser_cocci_menhir.mly" (_1::_2) -# 18558 "parser_cocci_menhir.ml" +# 18580 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18569,9 +18591,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_nest_after_stm = -# 1718 "parser_cocci_menhir.mly" +# 1731 "parser_cocci_menhir.mly" ([]) -# 18575 "parser_cocci_menhir.ml" +# 18597 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18599,9 +18621,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_stm = -# 1719 "parser_cocci_menhir.mly" +# 1732 "parser_cocci_menhir.mly" (_1::_2) -# 18605 "parser_cocci_menhir.ml" +# 18627 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18629,9 +18651,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_nest_after_stm = -# 1720 "parser_cocci_menhir.mly" +# 1733 "parser_cocci_menhir.mly" (_1@_2) -# 18635 "parser_cocci_menhir.ml" +# 18657 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18662,22 +18684,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 18666 "parser_cocci_menhir.ml" +# 18688 "parser_cocci_menhir.ml" ) = Obj.magic c in let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in let _1 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 18672 "parser_cocci_menhir.ml" +# 18694 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_c_ in let _v : 'tv_nest_expressions = -# 1212 "parser_cocci_menhir.mly" +# 1221 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<..." _1, Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))), P.clt2mcode "...>" c, None, false)) ) -# 18681 "parser_cocci_menhir.ml" +# 18703 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18708,22 +18730,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 18712 "parser_cocci_menhir.ml" +# 18734 "parser_cocci_menhir.ml" ) = Obj.magic c in let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in let _1 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 18718 "parser_cocci_menhir.ml" +# 18740 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_c_ in let _v : 'tv_nest_expressions = -# 1216 "parser_cocci_menhir.mly" +# 1225 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<+..." _1, Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))), P.clt2mcode "...+>" c, None, true)) ) -# 18727 "parser_cocci_menhir.ml" +# 18749 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18745,9 +18767,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_nest_start = -# 1710 "parser_cocci_menhir.mly" +# 1723 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1)) ) -# 18751 "parser_cocci_menhir.ml" +# 18773 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18769,11 +18791,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 168 "parser_cocci_menhir.mly" (unit) -# 18773 "parser_cocci_menhir.ml" +# 18795 "parser_cocci_menhir.ml" ) = -# 1855 "parser_cocci_menhir.mly" +# 1868 "parser_cocci_menhir.mly" ( () ) -# 18777 "parser_cocci_menhir.ml" +# 18799 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18799,11 +18821,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 168 "parser_cocci_menhir.mly" (unit) -# 18803 "parser_cocci_menhir.ml" +# 18825 "parser_cocci_menhir.ml" ) = -# 1856 "parser_cocci_menhir.mly" +# 1869 "parser_cocci_menhir.mly" ( () ) -# 18807 "parser_cocci_menhir.ml" +# 18829 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18825,11 +18847,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 168 "parser_cocci_menhir.mly" (unit) -# 18829 "parser_cocci_menhir.ml" +# 18851 "parser_cocci_menhir.ml" ) = -# 1857 "parser_cocci_menhir.mly" +# 1870 "parser_cocci_menhir.mly" ( () ) -# 18833 "parser_cocci_menhir.ml" +# 18855 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18857,10 +18879,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_g_ in let _endpos = _endpos_dg_ in let _v : 'tv_no_dot_start_end_dexpr_edots_when_TEllipsis_eexpr__ = -# 1380 "parser_cocci_menhir.mly" +# 1389 "parser_cocci_menhir.mly" ( function dot_builder -> g :: (List.concat(List.map (function (d,g) -> [dot_builder d;g]) dg)) ) -# 18864 "parser_cocci_menhir.ml" +# 18886 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18881,14 +18903,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let x : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 18885 "parser_cocci_menhir.ml" +# 18907 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : 'tv_nonempty_list_TMul_ = # 124 "standard.mly" ( [ x ] ) -# 18892 "parser_cocci_menhir.ml" +# 18914 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18915,14 +18937,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let x : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 18919 "parser_cocci_menhir.ml" +# 18941 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : 'tv_nonempty_list_TMul_ = # 126 "standard.mly" ( x :: xs ) -# 18926 "parser_cocci_menhir.ml" +# 18948 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18948,13 +18970,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_i_ in let _v : 'tv_not_ceq = -# 1437 "parser_cocci_menhir.mly" +# 1450 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); [i] ) -# 18958 "parser_cocci_menhir.ml" +# 18980 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -18988,13 +19010,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_not_ceq = -# 1443 "parser_cocci_menhir.mly" +# 1456 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); l ) -# 18998 "parser_cocci_menhir.ml" +# 19020 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19020,7 +19042,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_i_ in let _v : 'tv_not_eq = -# 1404 "parser_cocci_menhir.mly" +# 1417 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating @@ -19028,7 +19050,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct them in the pattern *) then failwith "constraints not allowed in a generated rule file"); [Ast0.wrap(Ast0.Id(P.id2mcode i))] ) -# 19032 "parser_cocci_menhir.ml" +# 19054 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19062,13 +19084,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_not_eq = -# 1412 "parser_cocci_menhir.mly" +# 1425 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); List.map (function i -> Ast0.wrap(Ast0.Id(P.id2mcode i))) l ) -# 19072 "parser_cocci_menhir.ml" +# 19094 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19094,13 +19116,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_i_ in let _v : 'tv_not_eqe = -# 1420 "parser_cocci_menhir.mly" +# 1433 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating then failwith "constraints not allowed in a generated rule file"); [Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i))))] ) -# 19104 "parser_cocci_menhir.ml" +# 19126 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19134,7 +19156,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_not_eqe = -# 1426 "parser_cocci_menhir.mly" +# 1439 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating @@ -19143,7 +19165,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (function i -> Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i))))) l ) -# 19147 "parser_cocci_menhir.ml" +# 19169 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19169,7 +19191,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos_i_ in let _v : 'tv_not_pos = -# 1457 "parser_cocci_menhir.mly" +# 1470 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating @@ -19180,7 +19202,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let i = (rule,name) in P.check_meta(Ast.MetaPosDecl(Ast.NONE,i)); [i] ) -# 19184 "parser_cocci_menhir.ml" +# 19206 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19214,7 +19236,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_not_pos = -# 1468 "parser_cocci_menhir.mly" +# 1481 "parser_cocci_menhir.mly" ( (if !Data.in_iso then failwith "constraints not allowed in iso file"); (if !Data.in_generating @@ -19228,7 +19250,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct P.check_meta(Ast.MetaPosDecl(Ast.NONE,i)); i) l ) -# 19232 "parser_cocci_menhir.ml" +# 19254 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19250,9 +19272,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_one_dec_decl_ = -# 1542 "parser_cocci_menhir.mly" +# 1555 "parser_cocci_menhir.mly" ( _1 ) -# 19256 "parser_cocci_menhir.ml" +# 19278 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19273,12 +19295,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 66 "parser_cocci_menhir.mly" (Parse_aux.list_info) -# 19277 "parser_cocci_menhir.ml" +# 19299 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_one_dec_decl_ = -# 1544 "parser_cocci_menhir.mly" +# 1557 "parser_cocci_menhir.mly" ( let (nm,lenname,pure,clt) = _1 in let nm = P.clt2mcode nm clt in let lenname = @@ -19286,7 +19308,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Some nm -> Some(P.clt2mcode nm clt) | None -> None in Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) ) -# 19290 "parser_cocci_menhir.ml" +# 19312 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19308,9 +19330,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_one_dec_name_opt_decl_ = -# 1542 "parser_cocci_menhir.mly" +# 1555 "parser_cocci_menhir.mly" ( _1 ) -# 19314 "parser_cocci_menhir.ml" +# 19336 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19331,12 +19353,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 66 "parser_cocci_menhir.mly" (Parse_aux.list_info) -# 19335 "parser_cocci_menhir.ml" +# 19357 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_one_dec_name_opt_decl_ = -# 1544 "parser_cocci_menhir.mly" +# 1557 "parser_cocci_menhir.mly" ( let (nm,lenname,pure,clt) = _1 in let nm = P.clt2mcode nm clt in let lenname = @@ -19344,7 +19366,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct Some nm -> Some(P.clt2mcode nm clt) | None -> None in Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) ) -# 19348 "parser_cocci_menhir.ml" +# 19370 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19370,15 +19392,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19374 "parser_cocci_menhir.ml" +# 19396 "parser_cocci_menhir.ml" ) = Obj.magic pv in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_pv_ in let _v : 'tv_one_decl_var = -# 1001 "parser_cocci_menhir.mly" +# 1010 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TyDecl(t,P.clt2mcode ";" pv)) ) -# 19382 "parser_cocci_menhir.ml" +# 19404 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19409,7 +19431,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19413 "parser_cocci_menhir.ml" +# 19435 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -19419,14 +19441,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 19423 "parser_cocci_menhir.ml" +# 19445 "parser_cocci_menhir.ml" in -# 1003 "parser_cocci_menhir.mly" +# 1012 "parser_cocci_menhir.mly" ( let (id,fn) = d in Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) ) -# 19430 "parser_cocci_menhir.ml" +# 19452 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19462,7 +19484,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19466 "parser_cocci_menhir.ml" +# 19488 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -19474,14 +19496,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 19478 "parser_cocci_menhir.ml" +# 19500 "parser_cocci_menhir.ml" in -# 1003 "parser_cocci_menhir.mly" +# 1012 "parser_cocci_menhir.mly" ( let (id,fn) = d in Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) ) -# 19485 "parser_cocci_menhir.ml" +# 19507 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19503,9 +19525,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_f_ in let _v : 'tv_one_decl_var = -# 1005 "parser_cocci_menhir.mly" +# 1014 "parser_cocci_menhir.mly" ( f ) -# 19509 "parser_cocci_menhir.ml" +# 19531 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19546,13 +19568,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19550 "parser_cocci_menhir.ml" +# 19572 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19556 "parser_cocci_menhir.ml" +# 19578 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -19562,14 +19584,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 19566 "parser_cocci_menhir.ml" +# 19588 "parser_cocci_menhir.ml" in -# 1007 "parser_cocci_menhir.mly" +# 1016 "parser_cocci_menhir.mly" ( let (id,fn) = d in Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)) ) -# 19573 "parser_cocci_menhir.ml" +# 19595 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19615,13 +19637,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19619 "parser_cocci_menhir.ml" +# 19641 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19625 "parser_cocci_menhir.ml" +# 19647 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in @@ -19633,14 +19655,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 19637 "parser_cocci_menhir.ml" +# 19659 "parser_cocci_menhir.ml" in -# 1007 "parser_cocci_menhir.mly" +# 1016 "parser_cocci_menhir.mly" ( let (id,fn) = d in Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)) ) -# 19644 "parser_cocci_menhir.ml" +# 19666 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19671,7 +19693,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19675 "parser_cocci_menhir.ml" +# 19697 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -19681,22 +19703,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 19685 "parser_cocci_menhir.ml" +# 19707 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 19692 "parser_cocci_menhir.ml" +# 19714 "parser_cocci_menhir.ml" in -# 1012 "parser_cocci_menhir.mly" +# 1021 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) ) -# 19700 "parser_cocci_menhir.ml" +# 19722 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19732,7 +19754,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19736 "parser_cocci_menhir.ml" +# 19758 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -19744,22 +19766,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 19748 "parser_cocci_menhir.ml" +# 19770 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 19755 "parser_cocci_menhir.ml" +# 19777 "parser_cocci_menhir.ml" in -# 1012 "parser_cocci_menhir.mly" +# 1021 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) ) -# 19763 "parser_cocci_menhir.ml" +# 19785 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19795,7 +19817,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19799 "parser_cocci_menhir.ml" +# 19821 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -19806,7 +19828,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 19810 "parser_cocci_menhir.ml" +# 19832 "parser_cocci_menhir.ml" in let s = @@ -19814,15 +19836,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 19818 "parser_cocci_menhir.ml" +# 19840 "parser_cocci_menhir.ml" in -# 1012 "parser_cocci_menhir.mly" +# 1021 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) ) -# 19826 "parser_cocci_menhir.ml" +# 19848 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19863,7 +19885,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19867 "parser_cocci_menhir.ml" +# 19889 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -19876,7 +19898,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 19880 "parser_cocci_menhir.ml" +# 19902 "parser_cocci_menhir.ml" in let s = @@ -19884,15 +19906,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 19888 "parser_cocci_menhir.ml" +# 19910 "parser_cocci_menhir.ml" in -# 1012 "parser_cocci_menhir.mly" +# 1021 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) ) -# 19896 "parser_cocci_menhir.ml" +# 19918 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -19933,13 +19955,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19937 "parser_cocci_menhir.ml" +# 19959 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 19943 "parser_cocci_menhir.ml" +# 19965 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -19949,24 +19971,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 19953 "parser_cocci_menhir.ml" +# 19975 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 19960 "parser_cocci_menhir.ml" +# 19982 "parser_cocci_menhir.ml" in -# 1017 "parser_cocci_menhir.mly" +# 1026 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv)) ) -# 19970 "parser_cocci_menhir.ml" +# 19992 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20012,13 +20034,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20016 "parser_cocci_menhir.ml" +# 20038 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20022 "parser_cocci_menhir.ml" +# 20044 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -20030,24 +20052,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 20034 "parser_cocci_menhir.ml" +# 20056 "parser_cocci_menhir.ml" in let s = # 39 "standard.mly" ( None ) -# 20041 "parser_cocci_menhir.ml" +# 20063 "parser_cocci_menhir.ml" in -# 1017 "parser_cocci_menhir.mly" +# 1026 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv)) ) -# 20051 "parser_cocci_menhir.ml" +# 20073 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20093,13 +20115,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20097 "parser_cocci_menhir.ml" +# 20119 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20103 "parser_cocci_menhir.ml" +# 20125 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -20110,7 +20132,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 20114 "parser_cocci_menhir.ml" +# 20136 "parser_cocci_menhir.ml" in let s = @@ -20118,17 +20140,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 20122 "parser_cocci_menhir.ml" +# 20144 "parser_cocci_menhir.ml" in -# 1017 "parser_cocci_menhir.mly" +# 1026 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv)) ) -# 20132 "parser_cocci_menhir.ml" +# 20154 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20179,13 +20201,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20183 "parser_cocci_menhir.ml" +# 20205 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20189 "parser_cocci_menhir.ml" +# 20211 "parser_cocci_menhir.ml" ) = Obj.magic q in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -20198,7 +20220,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 20202 "parser_cocci_menhir.ml" +# 20224 "parser_cocci_menhir.ml" in let s = @@ -20206,17 +20228,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 20210 "parser_cocci_menhir.ml" +# 20232 "parser_cocci_menhir.ml" in -# 1017 "parser_cocci_menhir.mly" +# 1026 "parser_cocci_menhir.mly" ( let (id,fn) = d in !Data.add_type_name (P.id2name i); let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e, P.clt2mcode ";" pv)) ) -# 20220 "parser_cocci_menhir.ml" +# 20242 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20277,34 +20299,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20281 "parser_cocci_menhir.ml" +# 20303 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20286 "parser_cocci_menhir.ml" +# 20308 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20292 "parser_cocci_menhir.ml" +# 20314 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20297 "parser_cocci_menhir.ml" +# 20319 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 20303 "parser_cocci_menhir.ml" +# 20325 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20308 "parser_cocci_menhir.ml" +# 20330 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let _startpos = _startpos_t_ in @@ -20313,11 +20335,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 20317 "parser_cocci_menhir.ml" +# 20339 "parser_cocci_menhir.ml" in -# 1027 "parser_cocci_menhir.mly" +# 1036 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -20325,7 +20347,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) ) -# 20329 "parser_cocci_menhir.ml" +# 20351 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20391,34 +20413,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20395 "parser_cocci_menhir.ml" +# 20417 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20400 "parser_cocci_menhir.ml" +# 20422 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20406 "parser_cocci_menhir.ml" +# 20428 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20411 "parser_cocci_menhir.ml" +# 20433 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 20417 "parser_cocci_menhir.ml" +# 20439 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20422 "parser_cocci_menhir.ml" +# 20444 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let x0 : 'tv_storage = Obj.magic x0 in @@ -20429,11 +20451,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 20433 "parser_cocci_menhir.ml" +# 20455 "parser_cocci_menhir.ml" in -# 1027 "parser_cocci_menhir.mly" +# 1036 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -20441,7 +20463,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) ) -# 20445 "parser_cocci_menhir.ml" +# 20467 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20482,27 +20504,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _5 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20486 "parser_cocci_menhir.ml" +# 20508 "parser_cocci_menhir.ml" ) = Obj.magic _5 in let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20491 "parser_cocci_menhir.ml" +# 20513 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20497 "parser_cocci_menhir.ml" +# 20519 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_decl_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_one_decl_var = -# 1035 "parser_cocci_menhir.mly" +# 1044 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.MacroDecl(_1,P.clt2mcode "(" _2,_3, P.clt2mcode ")" _4,P.clt2mcode ";" _5)) ) -# 20506 "parser_cocci_menhir.ml" +# 20528 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20573,40 +20595,40 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20577 "parser_cocci_menhir.ml" +# 20599 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20583 "parser_cocci_menhir.ml" +# 20605 "parser_cocci_menhir.ml" ) = Obj.magic q in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20588 "parser_cocci_menhir.ml" +# 20610 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20594 "parser_cocci_menhir.ml" +# 20616 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20599 "parser_cocci_menhir.ml" +# 20621 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 20605 "parser_cocci_menhir.ml" +# 20627 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20610 "parser_cocci_menhir.ml" +# 20632 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let _startpos = _startpos_t_ in @@ -20615,11 +20637,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 20619 "parser_cocci_menhir.ml" +# 20641 "parser_cocci_menhir.ml" in -# 1041 "parser_cocci_menhir.mly" +# 1050 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -20627,7 +20649,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))) -# 20631 "parser_cocci_menhir.ml" +# 20653 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20703,40 +20725,40 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20707 "parser_cocci_menhir.ml" +# 20729 "parser_cocci_menhir.ml" ) = Obj.magic pv in let e : 'tv_initialize = Obj.magic e in let q : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 20713 "parser_cocci_menhir.ml" +# 20735 "parser_cocci_menhir.ml" ) = Obj.magic q in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20718 "parser_cocci_menhir.ml" +# 20740 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20724 "parser_cocci_menhir.ml" +# 20746 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 20729 "parser_cocci_menhir.ml" +# 20751 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 20735 "parser_cocci_menhir.ml" +# 20757 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 20740 "parser_cocci_menhir.ml" +# 20762 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let x0 : 'tv_storage = Obj.magic x0 in @@ -20747,11 +20769,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 20751 "parser_cocci_menhir.ml" +# 20773 "parser_cocci_menhir.ml" in -# 1041 "parser_cocci_menhir.mly" +# 1050 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -20759,7 +20781,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))) -# 20763 "parser_cocci_menhir.ml" +# 20785 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20776,7 +20798,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_TLocal_ = # 29 "standard.mly" ( None ) -# 20780 "parser_cocci_menhir.ml" +# 20802 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20800,7 +20822,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_TLocal_ = # 31 "standard.mly" ( Some x ) -# 20804 "parser_cocci_menhir.ml" +# 20826 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20817,7 +20839,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_TPosAny_ = # 29 "standard.mly" ( None ) -# 20821 "parser_cocci_menhir.ml" +# 20843 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20841,7 +20863,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_TPosAny_ = # 31 "standard.mly" ( Some x ) -# 20845 "parser_cocci_menhir.ml" +# 20867 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20858,7 +20880,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_eexpr_ = # 29 "standard.mly" ( None ) -# 20862 "parser_cocci_menhir.ml" +# 20884 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20882,7 +20904,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_option_eexpr_ = # 31 "standard.mly" ( Some x ) -# 20886 "parser_cocci_menhir.ml" +# 20908 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20897,9 +20919,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_plus_after_dots = -# 1660 "parser_cocci_menhir.mly" +# 1673 "parser_cocci_menhir.mly" ([]) -# 20903 "parser_cocci_menhir.ml" +# 20925 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20925,9 +20947,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_dots = -# 1661 "parser_cocci_menhir.mly" +# 1674 "parser_cocci_menhir.mly" (_2) -# 20931 "parser_cocci_menhir.ml" +# 20953 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20955,9 +20977,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_dots = -# 1663 "parser_cocci_menhir.mly" +# 1676 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))))::_2 ) -# 20961 "parser_cocci_menhir.ml" +# 20983 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -20985,9 +21007,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_dots = -# 1664 "parser_cocci_menhir.mly" +# 1677 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DECL(_1))::_2 ) -# 20991 "parser_cocci_menhir.ml" +# 21013 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21015,9 +21037,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_dots = -# 1666 "parser_cocci_menhir.mly" +# 1679 "parser_cocci_menhir.mly" ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 ) -# 21021 "parser_cocci_menhir.ml" +# 21043 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21032,9 +21054,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_plus_after_exp = -# 1656 "parser_cocci_menhir.mly" +# 1669 "parser_cocci_menhir.mly" ([]) -# 21038 "parser_cocci_menhir.ml" +# 21060 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21062,9 +21084,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_exp = -# 1657 "parser_cocci_menhir.mly" +# 1670 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 ) -# 21068 "parser_cocci_menhir.ml" +# 21090 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21079,9 +21101,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_plus_after_stm = -# 1669 "parser_cocci_menhir.mly" +# 1682 "parser_cocci_menhir.mly" ([]) -# 21085 "parser_cocci_menhir.ml" +# 21107 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21109,9 +21131,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_stm = -# 1670 "parser_cocci_menhir.mly" +# 1683 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 ) -# 21115 "parser_cocci_menhir.ml" +# 21137 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21139,9 +21161,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_stm = -# 1671 "parser_cocci_menhir.mly" +# 1684 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DECL(_1))::_2 ) -# 21145 "parser_cocci_menhir.ml" +# 21167 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21169,9 +21191,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_after_stm = -# 1673 "parser_cocci_menhir.mly" +# 1686 "parser_cocci_menhir.mly" ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 ) -# 21175 "parser_cocci_menhir.ml" +# 21197 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21205,9 +21227,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_ew_ in let _v : 'tv_plus_body = -# 605 "parser_cocci_menhir.mly" +# 614 "parser_cocci_menhir.mly" ( Top_level.top_level (f@b@ew) ) -# 21211 "parser_cocci_menhir.ml" +# 21233 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21241,9 +21263,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_f_ in let _endpos = _endpos_ew_ in let _v : 'tv_plus_exp_body = -# 619 "parser_cocci_menhir.mly" +# 628 "parser_cocci_menhir.mly" ( Top_level.top_level (f@[b]@ew) ) -# 21247 "parser_cocci_menhir.ml" +# 21269 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21271,11 +21293,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 143 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 21275 "parser_cocci_menhir.ml" +# 21297 "parser_cocci_menhir.ml" ) = # 179 "parser_cocci_menhir.mly" ( _1 ) -# 21279 "parser_cocci_menhir.ml" +# 21301 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21303,11 +21325,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 143 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 21307 "parser_cocci_menhir.ml" +# 21329 "parser_cocci_menhir.ml" ) = # 179 "parser_cocci_menhir.mly" ( p ) -# 21311 "parser_cocci_menhir.ml" +# 21333 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21335,11 +21357,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 143 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 21339 "parser_cocci_menhir.ml" +# 21361 "parser_cocci_menhir.ml" ) = # 180 "parser_cocci_menhir.mly" ( p ) -# 21343 "parser_cocci_menhir.ml" +# 21365 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21367,11 +21389,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 140 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 21371 "parser_cocci_menhir.ml" +# 21393 "parser_cocci_menhir.ml" ) = # 175 "parser_cocci_menhir.mly" ( _1 ) -# 21375 "parser_cocci_menhir.ml" +# 21397 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21399,11 +21421,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 140 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 21403 "parser_cocci_menhir.ml" +# 21425 "parser_cocci_menhir.ml" ) = # 175 "parser_cocci_menhir.mly" ( p ) -# 21407 "parser_cocci_menhir.ml" +# 21429 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21431,11 +21453,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 140 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 21435 "parser_cocci_menhir.ml" +# 21457 "parser_cocci_menhir.ml" ) = # 176 "parser_cocci_menhir.mly" ( p ) -# 21439 "parser_cocci_menhir.ml" +# 21461 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21457,9 +21479,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_plus_start = -# 1645 "parser_cocci_menhir.mly" +# 1658 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] ) -# 21463 "parser_cocci_menhir.ml" +# 21485 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21481,9 +21503,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_plus_start = -# 1646 "parser_cocci_menhir.mly" +# 1659 "parser_cocci_menhir.mly" ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] ) -# 21487 "parser_cocci_menhir.ml" +# 21509 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21511,9 +21533,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_start = -# 1648 "parser_cocci_menhir.mly" +# 1661 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 ) -# 21517 "parser_cocci_menhir.ml" +# 21539 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21541,9 +21563,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_start = -# 1650 "parser_cocci_menhir.mly" +# 1663 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))))::_2 ) -# 21547 "parser_cocci_menhir.ml" +# 21569 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21571,9 +21593,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_start = -# 1651 "parser_cocci_menhir.mly" +# 1664 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DECL(_1))::_2 ) -# 21577 "parser_cocci_menhir.ml" +# 21599 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21601,9 +21623,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_plus_start = -# 1653 "parser_cocci_menhir.mly" +# 1666 "parser_cocci_menhir.mly" ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 ) -# 21607 "parser_cocci_menhir.ml" +# 21629 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21624,14 +21646,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 47 "parser_cocci_menhir.mly" (string) -# 21628 "parser_cocci_menhir.ml" +# 21650 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pnrule = -# 226 "parser_cocci_menhir.mly" +# 230 "parser_cocci_menhir.mly" ( Ast.Dep _1 ) -# 21635 "parser_cocci_menhir.ml" +# 21657 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21656,14 +21678,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 47 "parser_cocci_menhir.mly" (string) -# 21660 "parser_cocci_menhir.ml" +# 21682 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_pnrule = -# 227 "parser_cocci_menhir.mly" +# 231 "parser_cocci_menhir.mly" ( Ast.AntiDep _2 ) -# 21667 "parser_cocci_menhir.ml" +# 21689 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21688,14 +21710,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 47 "parser_cocci_menhir.mly" (string) -# 21692 "parser_cocci_menhir.ml" +# 21714 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_pnrule = -# 228 "parser_cocci_menhir.mly" +# 232 "parser_cocci_menhir.mly" ( Ast.EverDep _2 ) -# 21699 "parser_cocci_menhir.ml" +# 21721 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21720,14 +21742,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 47 "parser_cocci_menhir.mly" (string) -# 21724 "parser_cocci_menhir.ml" +# 21746 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_pnrule = -# 229 "parser_cocci_menhir.mly" +# 233 "parser_cocci_menhir.mly" ( Ast.NeverDep _2 ) -# 21731 "parser_cocci_menhir.ml" +# 21753 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21757,9 +21779,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_pnrule = -# 230 "parser_cocci_menhir.mly" +# 234 "parser_cocci_menhir.mly" ( _2 ) -# 21763 "parser_cocci_menhir.ml" +# 21785 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21781,9 +21803,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1313 "parser_cocci_menhir.mly" +# 1322 "parser_cocci_menhir.mly" ( _1 ) -# 21787 "parser_cocci_menhir.ml" +# 21809 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21819,22 +21841,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 21823 "parser_cocci_menhir.ml" +# 21845 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 21829 "parser_cocci_menhir.ml" +# 21851 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1315 "parser_cocci_menhir.mly" +# 1324 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3, P.clt2mcode "]" _4)) ) -# 21838 "parser_cocci_menhir.ml" +# 21860 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21866,15 +21888,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 21870 "parser_cocci_menhir.ml" +# 21892 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1318 "parser_cocci_menhir.mly" +# 1327 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) ) -# 21878 "parser_cocci_menhir.ml" +# 21900 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21906,16 +21928,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 104 "parser_cocci_menhir.mly" (Data.clt) -# 21910 "parser_cocci_menhir.ml" +# 21932 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1320 "parser_cocci_menhir.mly" +# 1329 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2, _3)) ) -# 21919 "parser_cocci_menhir.ml" +# 21941 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21941,15 +21963,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 21945 "parser_cocci_menhir.ml" +# 21967 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1323 "parser_cocci_menhir.mly" +# 1332 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) ) -# 21953 "parser_cocci_menhir.ml" +# 21975 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -21975,15 +21997,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 21979 "parser_cocci_menhir.ml" +# 22001 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1325 "parser_cocci_menhir.mly" +# 1334 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) ) -# 21987 "parser_cocci_menhir.ml" +# 22009 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22019,23 +22041,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 22023 "parser_cocci_menhir.ml" +# 22045 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 22029 "parser_cocci_menhir.ml" +# 22051 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = -# 1327 "parser_cocci_menhir.mly" +# 1336 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2, _3, P.clt2mcode ")" _4)) ) -# 22039 "parser_cocci_menhir.ml" +# 22061 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22057,9 +22079,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1313 "parser_cocci_menhir.mly" +# 1322 "parser_cocci_menhir.mly" ( _1 ) -# 22063 "parser_cocci_menhir.ml" +# 22085 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22095,22 +22117,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 22099 "parser_cocci_menhir.ml" +# 22121 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 22105 "parser_cocci_menhir.ml" +# 22127 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1315 "parser_cocci_menhir.mly" +# 1324 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3, P.clt2mcode "]" _4)) ) -# 22114 "parser_cocci_menhir.ml" +# 22136 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22142,15 +22164,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 22146 "parser_cocci_menhir.ml" +# 22168 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1318 "parser_cocci_menhir.mly" +# 1327 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) ) -# 22154 "parser_cocci_menhir.ml" +# 22176 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22182,16 +22204,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 104 "parser_cocci_menhir.mly" (Data.clt) -# 22186 "parser_cocci_menhir.ml" +# 22208 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1320 "parser_cocci_menhir.mly" +# 1329 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2, _3)) ) -# 22195 "parser_cocci_menhir.ml" +# 22217 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22217,15 +22239,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 22221 "parser_cocci_menhir.ml" +# 22243 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1323 "parser_cocci_menhir.mly" +# 1332 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) ) -# 22229 "parser_cocci_menhir.ml" +# 22251 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22251,15 +22273,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 22255 "parser_cocci_menhir.ml" +# 22277 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1325 "parser_cocci_menhir.mly" +# 1334 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) ) -# 22263 "parser_cocci_menhir.ml" +# 22285 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22295,23 +22317,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 22299 "parser_cocci_menhir.ml" +# 22321 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 22305 "parser_cocci_menhir.ml" +# 22327 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_invalid_ = -# 1327 "parser_cocci_menhir.mly" +# 1336 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2, _3, P.clt2mcode ")" _4)) ) -# 22315 "parser_cocci_menhir.ml" +# 22337 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22333,9 +22355,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1313 "parser_cocci_menhir.mly" +# 1322 "parser_cocci_menhir.mly" ( _1 ) -# 22339 "parser_cocci_menhir.ml" +# 22361 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22371,22 +22393,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 22375 "parser_cocci_menhir.ml" +# 22397 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 22381 "parser_cocci_menhir.ml" +# 22403 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1315 "parser_cocci_menhir.mly" +# 1324 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3, P.clt2mcode "]" _4)) ) -# 22390 "parser_cocci_menhir.ml" +# 22412 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22418,15 +22440,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 22422 "parser_cocci_menhir.ml" +# 22444 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1318 "parser_cocci_menhir.mly" +# 1327 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) ) -# 22430 "parser_cocci_menhir.ml" +# 22452 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22458,16 +22480,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 104 "parser_cocci_menhir.mly" (Data.clt) -# 22462 "parser_cocci_menhir.ml" +# 22484 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1320 "parser_cocci_menhir.mly" +# 1329 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2, _3)) ) -# 22471 "parser_cocci_menhir.ml" +# 22493 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22493,15 +22515,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 22497 "parser_cocci_menhir.ml" +# 22519 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1323 "parser_cocci_menhir.mly" +# 1332 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) ) -# 22505 "parser_cocci_menhir.ml" +# 22527 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22527,15 +22549,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 22531 "parser_cocci_menhir.ml" +# 22553 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1325 "parser_cocci_menhir.mly" +# 1334 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) ) -# 22539 "parser_cocci_menhir.ml" +# 22561 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22571,23 +22593,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 22575 "parser_cocci_menhir.ml" +# 22597 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 22581 "parser_cocci_menhir.ml" +# 22603 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = -# 1327 "parser_cocci_menhir.mly" +# 1336 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2, _3, P.clt2mcode ")" _4)) ) -# 22591 "parser_cocci_menhir.ml" +# 22613 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22609,9 +22631,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1313 "parser_cocci_menhir.mly" +# 1322 "parser_cocci_menhir.mly" ( _1 ) -# 22615 "parser_cocci_menhir.ml" +# 22637 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22647,22 +22669,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 22651 "parser_cocci_menhir.ml" +# 22673 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( # 102 "parser_cocci_menhir.mly" (Data.clt) -# 22657 "parser_cocci_menhir.ml" +# 22679 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1315 "parser_cocci_menhir.mly" +# 1324 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3, P.clt2mcode "]" _4)) ) -# 22666 "parser_cocci_menhir.ml" +# 22688 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22694,15 +22716,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 22698 "parser_cocci_menhir.ml" +# 22720 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1318 "parser_cocci_menhir.mly" +# 1327 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) ) -# 22706 "parser_cocci_menhir.ml" +# 22728 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22734,16 +22756,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 104 "parser_cocci_menhir.mly" (Data.clt) -# 22738 "parser_cocci_menhir.ml" +# 22760 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1320 "parser_cocci_menhir.mly" +# 1329 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2, _3)) ) -# 22747 "parser_cocci_menhir.ml" +# 22769 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22769,15 +22791,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 22773 "parser_cocci_menhir.ml" +# 22795 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1323 "parser_cocci_menhir.mly" +# 1332 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) ) -# 22781 "parser_cocci_menhir.ml" +# 22803 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22803,15 +22825,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 22807 "parser_cocci_menhir.ml" +# 22829 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1325 "parser_cocci_menhir.mly" +# 1334 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) ) -# 22815 "parser_cocci_menhir.ml" +# 22837 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22847,23 +22869,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 22851 "parser_cocci_menhir.ml" +# 22873 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 22857 "parser_cocci_menhir.ml" +# 22879 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_postfix_expr_expr_invalid_ = -# 1327 "parser_cocci_menhir.mly" +# 1336 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2, _3, P.clt2mcode ")" _4)) ) -# 22867 "parser_cocci_menhir.ml" +# 22889 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22885,9 +22907,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1332 "parser_cocci_menhir.mly" +# 1341 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(_1)) ) -# 22891 "parser_cocci_menhir.ml" +# 22913 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22908,15 +22930,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 22912 "parser_cocci_menhir.ml" +# 22934 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1334 "parser_cocci_menhir.mly" +# 1343 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 22920 "parser_cocci_menhir.ml" +# 22942 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22937,15 +22959,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 22941 "parser_cocci_menhir.ml" +# 22963 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1337 "parser_cocci_menhir.mly" +# 1346 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) ) -# 22949 "parser_cocci_menhir.ml" +# 22971 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22966,15 +22988,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 22970 "parser_cocci_menhir.ml" +# 22992 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1340 "parser_cocci_menhir.mly" +# 1349 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) ) -# 22978 "parser_cocci_menhir.ml" +# 23000 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -22995,15 +23017,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 22999 "parser_cocci_menhir.ml" +# 23021 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1343 "parser_cocci_menhir.mly" +# 1352 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) ) -# 23007 "parser_cocci_menhir.ml" +# 23029 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23024,16 +23046,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23028 "parser_cocci_menhir.ml" +# 23050 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1346 "parser_cocci_menhir.mly" +# 1355 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) ) -# 23037 "parser_cocci_menhir.ml" +# 23059 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23054,15 +23076,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 63 "parser_cocci_menhir.mly" (Parse_aux.expinfo) -# 23058 "parser_cocci_menhir.ml" +# 23080 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1350 "parser_cocci_menhir.mly" +# 1359 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) ) -# 23066 "parser_cocci_menhir.ml" +# 23088 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23083,16 +23105,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23087 "parser_cocci_menhir.ml" +# 23109 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1353 "parser_cocci_menhir.mly" +# 1362 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) ) -# 23096 "parser_cocci_menhir.ml" +# 23118 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23113,16 +23135,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23117 "parser_cocci_menhir.ml" +# 23139 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1357 "parser_cocci_menhir.mly" +# 1366 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) ) -# 23126 "parser_cocci_menhir.ml" +# 23148 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23143,16 +23165,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23147 "parser_cocci_menhir.ml" +# 23169 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1361 "parser_cocci_menhir.mly" +# 1370 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) ) -# 23156 "parser_cocci_menhir.ml" +# 23178 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23183,21 +23205,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 23187 "parser_cocci_menhir.ml" +# 23209 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 23193 "parser_cocci_menhir.ml" +# 23215 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1365 "parser_cocci_menhir.mly" +# 1374 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2, P.clt2mcode ")" _3)) ) -# 23201 "parser_cocci_menhir.ml" +# 23223 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23228,23 +23250,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 23232 "parser_cocci_menhir.ml" +# 23254 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 23238 "parser_cocci_menhir.ml" +# 23260 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1368 "parser_cocci_menhir.mly" +# 1377 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3)) ) -# 23248 "parser_cocci_menhir.ml" +# 23270 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23266,9 +23288,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_dot_expressions_ = -# 1372 "parser_cocci_menhir.mly" +# 1381 "parser_cocci_menhir.mly" ( _1 ) -# 23272 "parser_cocci_menhir.ml" +# 23294 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23290,9 +23312,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1332 "parser_cocci_menhir.mly" +# 1341 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(_1)) ) -# 23296 "parser_cocci_menhir.ml" +# 23318 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23313,15 +23335,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 23317 "parser_cocci_menhir.ml" +# 23339 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1334 "parser_cocci_menhir.mly" +# 1343 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 23325 "parser_cocci_menhir.ml" +# 23347 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23342,15 +23364,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 23346 "parser_cocci_menhir.ml" +# 23368 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1337 "parser_cocci_menhir.mly" +# 1346 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) ) -# 23354 "parser_cocci_menhir.ml" +# 23376 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23371,15 +23393,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 23375 "parser_cocci_menhir.ml" +# 23397 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1340 "parser_cocci_menhir.mly" +# 1349 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) ) -# 23383 "parser_cocci_menhir.ml" +# 23405 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23400,15 +23422,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 23404 "parser_cocci_menhir.ml" +# 23426 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1343 "parser_cocci_menhir.mly" +# 1352 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) ) -# 23412 "parser_cocci_menhir.ml" +# 23434 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23429,16 +23451,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23433 "parser_cocci_menhir.ml" +# 23455 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1346 "parser_cocci_menhir.mly" +# 1355 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) ) -# 23442 "parser_cocci_menhir.ml" +# 23464 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23459,15 +23481,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 63 "parser_cocci_menhir.mly" (Parse_aux.expinfo) -# 23463 "parser_cocci_menhir.ml" +# 23485 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1350 "parser_cocci_menhir.mly" +# 1359 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) ) -# 23471 "parser_cocci_menhir.ml" +# 23493 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23488,16 +23510,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23492 "parser_cocci_menhir.ml" +# 23514 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1353 "parser_cocci_menhir.mly" +# 1362 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) ) -# 23501 "parser_cocci_menhir.ml" +# 23523 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23518,16 +23540,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23522 "parser_cocci_menhir.ml" +# 23544 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1357 "parser_cocci_menhir.mly" +# 1366 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) ) -# 23531 "parser_cocci_menhir.ml" +# 23553 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23548,16 +23570,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23552 "parser_cocci_menhir.ml" +# 23574 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1361 "parser_cocci_menhir.mly" +# 1370 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) ) -# 23561 "parser_cocci_menhir.ml" +# 23583 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23588,21 +23610,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 23592 "parser_cocci_menhir.ml" +# 23614 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 23598 "parser_cocci_menhir.ml" +# 23620 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1365 "parser_cocci_menhir.mly" +# 1374 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2, P.clt2mcode ")" _3)) ) -# 23606 "parser_cocci_menhir.ml" +# 23628 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23633,23 +23655,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 23637 "parser_cocci_menhir.ml" +# 23659 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 23643 "parser_cocci_menhir.ml" +# 23665 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1368 "parser_cocci_menhir.mly" +# 1377 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3)) ) -# 23653 "parser_cocci_menhir.ml" +# 23675 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23671,9 +23693,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_invalid_ = -# 1372 "parser_cocci_menhir.mly" +# 1381 "parser_cocci_menhir.mly" ( _1 ) -# 23677 "parser_cocci_menhir.ml" +# 23699 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23695,9 +23717,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1332 "parser_cocci_menhir.mly" +# 1341 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(_1)) ) -# 23701 "parser_cocci_menhir.ml" +# 23723 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23718,15 +23740,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 23722 "parser_cocci_menhir.ml" +# 23744 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1334 "parser_cocci_menhir.mly" +# 1343 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 23730 "parser_cocci_menhir.ml" +# 23752 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23747,15 +23769,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 23751 "parser_cocci_menhir.ml" +# 23773 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1337 "parser_cocci_menhir.mly" +# 1346 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) ) -# 23759 "parser_cocci_menhir.ml" +# 23781 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23776,15 +23798,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 23780 "parser_cocci_menhir.ml" +# 23802 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1340 "parser_cocci_menhir.mly" +# 1349 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) ) -# 23788 "parser_cocci_menhir.ml" +# 23810 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23805,15 +23827,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 23809 "parser_cocci_menhir.ml" +# 23831 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1343 "parser_cocci_menhir.mly" +# 1352 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) ) -# 23817 "parser_cocci_menhir.ml" +# 23839 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23834,16 +23856,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23838 "parser_cocci_menhir.ml" +# 23860 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1346 "parser_cocci_menhir.mly" +# 1355 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) ) -# 23847 "parser_cocci_menhir.ml" +# 23869 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23864,15 +23886,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 63 "parser_cocci_menhir.mly" (Parse_aux.expinfo) -# 23868 "parser_cocci_menhir.ml" +# 23890 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1350 "parser_cocci_menhir.mly" +# 1359 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) ) -# 23876 "parser_cocci_menhir.ml" +# 23898 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23893,16 +23915,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23897 "parser_cocci_menhir.ml" +# 23919 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1353 "parser_cocci_menhir.mly" +# 1362 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) ) -# 23906 "parser_cocci_menhir.ml" +# 23928 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23923,16 +23945,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23927 "parser_cocci_menhir.ml" +# 23949 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1357 "parser_cocci_menhir.mly" +# 1366 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) ) -# 23936 "parser_cocci_menhir.ml" +# 23958 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23953,16 +23975,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 23957 "parser_cocci_menhir.ml" +# 23979 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1361 "parser_cocci_menhir.mly" +# 1370 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) ) -# 23966 "parser_cocci_menhir.ml" +# 23988 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -23993,21 +24015,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 23997 "parser_cocci_menhir.ml" +# 24019 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 24003 "parser_cocci_menhir.ml" +# 24025 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1365 "parser_cocci_menhir.mly" +# 1374 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2, P.clt2mcode ")" _3)) ) -# 24011 "parser_cocci_menhir.ml" +# 24033 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24038,23 +24060,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 24042 "parser_cocci_menhir.ml" +# 24064 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 24048 "parser_cocci_menhir.ml" +# 24070 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1368 "parser_cocci_menhir.mly" +# 1377 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3)) ) -# 24058 "parser_cocci_menhir.ml" +# 24080 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24076,9 +24098,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_eexpr_nest_expressions_ = -# 1372 "parser_cocci_menhir.mly" +# 1381 "parser_cocci_menhir.mly" ( _1 ) -# 24082 "parser_cocci_menhir.ml" +# 24104 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24100,9 +24122,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1332 "parser_cocci_menhir.mly" +# 1341 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Ident(_1)) ) -# 24106 "parser_cocci_menhir.ml" +# 24128 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24123,15 +24145,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 24127 "parser_cocci_menhir.ml" +# 24149 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1334 "parser_cocci_menhir.mly" +# 1343 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) ) -# 24135 "parser_cocci_menhir.ml" +# 24157 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24152,15 +24174,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 24156 "parser_cocci_menhir.ml" +# 24178 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1337 "parser_cocci_menhir.mly" +# 1346 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) ) -# 24164 "parser_cocci_menhir.ml" +# 24186 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24181,15 +24203,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 24185 "parser_cocci_menhir.ml" +# 24207 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1340 "parser_cocci_menhir.mly" +# 1349 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) ) -# 24193 "parser_cocci_menhir.ml" +# 24215 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24210,15 +24232,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 24214 "parser_cocci_menhir.ml" +# 24236 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1343 "parser_cocci_menhir.mly" +# 1352 "parser_cocci_menhir.mly" ( let (x,clt) = _1 in Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) ) -# 24222 "parser_cocci_menhir.ml" +# 24244 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24239,16 +24261,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 24243 "parser_cocci_menhir.ml" +# 24265 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1346 "parser_cocci_menhir.mly" +# 1355 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) ) -# 24252 "parser_cocci_menhir.ml" +# 24274 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24269,15 +24291,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 63 "parser_cocci_menhir.mly" (Parse_aux.expinfo) -# 24273 "parser_cocci_menhir.ml" +# 24295 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1350 "parser_cocci_menhir.mly" +# 1359 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,clt) = _1 in Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) ) -# 24281 "parser_cocci_menhir.ml" +# 24303 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24298,16 +24320,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 24302 "parser_cocci_menhir.ml" +# 24324 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1353 "parser_cocci_menhir.mly" +# 1362 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) ) -# 24311 "parser_cocci_menhir.ml" +# 24333 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24328,16 +24350,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 24332 "parser_cocci_menhir.ml" +# 24354 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1357 "parser_cocci_menhir.mly" +# 1366 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) ) -# 24341 "parser_cocci_menhir.ml" +# 24363 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24358,16 +24380,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 67 "parser_cocci_menhir.mly" (Parse_aux.typed_info) -# 24362 "parser_cocci_menhir.ml" +# 24384 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1361 "parser_cocci_menhir.mly" +# 1370 "parser_cocci_menhir.mly" ( let (nm,constraints,pure,ty,clt) = _1 in Ast0.wrap (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) ) -# 24371 "parser_cocci_menhir.ml" +# 24393 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24398,21 +24420,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 24402 "parser_cocci_menhir.ml" +# 24424 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 24408 "parser_cocci_menhir.ml" +# 24430 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1365 "parser_cocci_menhir.mly" +# 1374 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2, P.clt2mcode ")" _3)) ) -# 24416 "parser_cocci_menhir.ml" +# 24438 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24443,23 +24465,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 24447 "parser_cocci_menhir.ml" +# 24469 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_expr_eexpr_ = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 24453 "parser_cocci_menhir.ml" +# 24475 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1368 "parser_cocci_menhir.mly" +# 1377 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1, code, mids, P.clt2mcode ")" _3)) ) -# 24463 "parser_cocci_menhir.ml" +# 24485 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24481,9 +24503,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_primary_expr_expr_invalid_ = -# 1372 "parser_cocci_menhir.mly" +# 1381 "parser_cocci_menhir.mly" ( _1 ) -# 24487 "parser_cocci_menhir.ml" +# 24509 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24505,7 +24527,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_pure = # 190 "parser_cocci_menhir.mly" ( Ast0.Pure ) -# 24509 "parser_cocci_menhir.ml" +# 24531 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24527,7 +24549,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_pure = # 191 "parser_cocci_menhir.mly" ( Ast0.Context ) -# 24531 "parser_cocci_menhir.ml" +# 24553 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24553,7 +24575,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_pure = # 192 "parser_cocci_menhir.mly" ( Ast0.PureContext ) -# 24557 "parser_cocci_menhir.ml" +# 24579 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24579,7 +24601,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_pure = # 193 "parser_cocci_menhir.mly" ( Ast0.PureContext ) -# 24583 "parser_cocci_menhir.ml" +# 24605 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24596,7 +24618,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_pure = # 194 "parser_cocci_menhir.mly" ( Ast0.Impure ) -# 24600 "parser_cocci_menhir.ml" +# 24622 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24617,14 +24639,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 59 "parser_cocci_menhir.mly" (string * Data.clt) -# 24621 "parser_cocci_menhir.ml" +# 24643 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident = -# 1386 "parser_cocci_menhir.mly" +# 1395 "parser_cocci_menhir.mly" ( _1 ) -# 24628 "parser_cocci_menhir.ml" +# 24650 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24646,9 +24668,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1392 "parser_cocci_menhir.mly" +# 1401 "parser_cocci_menhir.mly" ( (None,P.id2name _1) ) -# 24652 "parser_cocci_menhir.ml" +# 24674 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24670,9 +24692,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1393 "parser_cocci_menhir.mly" +# 1402 "parser_cocci_menhir.mly" ( _1 ) -# 24676 "parser_cocci_menhir.ml" +# 24698 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24692,9 +24714,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1394 "parser_cocci_menhir.mly" +# 1403 "parser_cocci_menhir.mly" ( (None,"list") ) -# 24698 "parser_cocci_menhir.ml" +# 24720 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24714,9 +24736,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1395 "parser_cocci_menhir.mly" +# 1404 "parser_cocci_menhir.mly" ( (None,"error") ) -# 24720 "parser_cocci_menhir.ml" +# 24742 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24736,9 +24758,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1396 "parser_cocci_menhir.mly" +# 1405 "parser_cocci_menhir.mly" ( (None,"type") ) -# 24742 "parser_cocci_menhir.ml" +# 24764 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24758,9 +24780,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_pure_ident_or_meta_ident = -# 1397 "parser_cocci_menhir.mly" +# 1406 "parser_cocci_menhir.mly" ( (None,"name") ) -# 24764 "parser_cocci_menhir.ml" +# 24786 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24788,9 +24810,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_l_ in let _v : 'tv_pure_ident_or_meta_ident_with_not_eq_not_ceq_ = -# 1400 "parser_cocci_menhir.mly" +# 1413 "parser_cocci_menhir.mly" ( (i,l) ) -# 24794 "parser_cocci_menhir.ml" +# 24816 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24818,9 +24840,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_l_ in let _v : 'tv_pure_ident_or_meta_ident_with_not_eq_not_eq_ = -# 1400 "parser_cocci_menhir.mly" +# 1413 "parser_cocci_menhir.mly" ( (i,l) ) -# 24824 "parser_cocci_menhir.ml" +# 24846 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24848,9 +24870,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_l_ in let _v : 'tv_pure_ident_or_meta_ident_with_not_eq_not_eqe_ = -# 1400 "parser_cocci_menhir.mly" +# 1413 "parser_cocci_menhir.mly" ( (i,l) ) -# 24854 "parser_cocci_menhir.ml" +# 24876 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24878,9 +24900,71 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_i_ in let _endpos = _endpos_l_ in let _v : 'tv_pure_ident_or_meta_ident_with_not_eq_not_pos_ = -# 1400 "parser_cocci_menhir.mly" +# 1413 "parser_cocci_menhir.mly" ( (i,l) ) -# 24884 "parser_cocci_menhir.ml" +# 24906 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : 'tv_pure_ident_or_meta_ident = Obj.magic _1 in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : 'tv_pure_ident_or_meta_ident_with_seed = +# 1409 "parser_cocci_menhir.mly" + ( (_1,None) ) +# 24930 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.semv = s; + MenhirLib.EngineTypes.startp = _startpos_s_; + MenhirLib.EngineTypes.endp = _endpos_s_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let s : ( +# 87 "parser_cocci_menhir.mly" + (string * Data.clt) +# 24960 "parser_cocci_menhir.ml" + ) = Obj.magic s in + let _1 : 'tv_pure_ident_or_meta_ident = Obj.magic _1 in + let _startpos = _startpos__1_ in + let _endpos = _endpos_s_ in + let _v : 'tv_pure_ident_or_meta_ident_with_seed = +# 1410 "parser_cocci_menhir.mly" + ( (_1,Some (P.id2name s)) ) +# 24968 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24897,11 +24981,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 131 "parser_cocci_menhir.mly" (unit) -# 24901 "parser_cocci_menhir.ml" +# 24985 "parser_cocci_menhir.ml" ) = # 172 "parser_cocci_menhir.mly" ( ) -# 24905 "parser_cocci_menhir.ml" +# 24989 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24923,9 +25007,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_rule_elem_statement = -# 906 "parser_cocci_menhir.mly" +# 915 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),_1)) ) -# 24929 "parser_cocci_menhir.ml" +# 25013 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24951,15 +25035,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 24955 "parser_cocci_menhir.ml" +# 25039 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_expr = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_rule_elem_statement = -# 907 "parser_cocci_menhir.mly" +# 916 "parser_cocci_menhir.mly" ( P.exp_stm _1 _2 ) -# 24963 "parser_cocci_menhir.ml" +# 25047 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -24990,20 +25074,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 24994 "parser_cocci_menhir.ml" +# 25078 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 25000 "parser_cocci_menhir.ml" +# 25084 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_rule_elem_statement = -# 908 "parser_cocci_menhir.mly" +# 917 "parser_cocci_menhir.mly" ( P.ret_exp _1 _2 _3 ) -# 25007 "parser_cocci_menhir.ml" +# 25091 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25029,19 +25113,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 25033 "parser_cocci_menhir.ml" +# 25117 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 25038 "parser_cocci_menhir.ml" +# 25122 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_rule_elem_statement = -# 909 "parser_cocci_menhir.mly" +# 918 "parser_cocci_menhir.mly" ( P.ret _1 _2 ) -# 25045 "parser_cocci_menhir.ml" +# 25129 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25067,19 +25151,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 25071 "parser_cocci_menhir.ml" +# 25155 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 25076 "parser_cocci_menhir.ml" +# 25160 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_rule_elem_statement = -# 910 "parser_cocci_menhir.mly" +# 919 "parser_cocci_menhir.mly" ( P.break _1 _2 ) -# 25083 "parser_cocci_menhir.ml" +# 25167 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25105,19 +25189,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 25109 "parser_cocci_menhir.ml" +# 25193 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 25114 "parser_cocci_menhir.ml" +# 25198 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_rule_elem_statement = -# 911 "parser_cocci_menhir.mly" +# 920 "parser_cocci_menhir.mly" ( P.cont _1 _2 ) -# 25121 "parser_cocci_menhir.ml" +# 25205 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25148,24 +25232,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 25152 "parser_cocci_menhir.ml" +# 25236 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_rule_elem_statement_rule_elem_statement_ = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 25158 "parser_cocci_menhir.ml" +# 25242 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_rule_elem_statement = -# 913 "parser_cocci_menhir.mly" +# 922 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap (Ast0.Disj(P.clt2mcode "(" _1, List.map (function x -> Ast0.wrap(Ast0.DOTS([x]))) code, mids, P.clt2mcode ")" _3)) ) -# 25169 "parser_cocci_menhir.ml" +# 25253 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25221,18 +25305,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 153 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 25225 "parser_cocci_menhir.ml" +# 25309 "parser_cocci_menhir.ml" ) = let nm = # 39 "standard.mly" ( None ) -# 25230 "parser_cocci_menhir.ml" +# 25314 "parser_cocci_menhir.ml" in # 202 "parser_cocci_menhir.mly" ( P.make_cocci_rule_name_result nm d i a e ee ) -# 25236 "parser_cocci_menhir.ml" +# 25320 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25294,19 +25378,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 153 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 25298 "parser_cocci_menhir.ml" +# 25382 "parser_cocci_menhir.ml" ) = let nm = let x = x0 in # 41 "standard.mly" ( Some x ) -# 25304 "parser_cocci_menhir.ml" +# 25388 "parser_cocci_menhir.ml" in # 202 "parser_cocci_menhir.mly" ( P.make_cocci_rule_name_result nm d i a e ee ) -# 25310 "parser_cocci_menhir.ml" +# 25394 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25366,11 +25450,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 153 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 25370 "parser_cocci_menhir.ml" +# 25454 "parser_cocci_menhir.ml" ) = # 207 "parser_cocci_menhir.mly" ( P.make_generated_rule_name_result None d i a e ee ) -# 25374 "parser_cocci_menhir.ml" +# 25458 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25412,11 +25496,91 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 153 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 25416 "parser_cocci_menhir.ml" +# 25500 "parser_cocci_menhir.ml" ) = # 209 "parser_cocci_menhir.mly" ( P.make_script_rule_name_result lang d ) -# 25420 "parser_cocci_menhir.ml" +# 25504 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.semv = lang; + MenhirLib.EngineTypes.startp = _startpos_lang_; + MenhirLib.EngineTypes.endp = _endpos_lang_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let lang : 'tv_pure_ident = Obj.magic lang in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : ( +# 153 "parser_cocci_menhir.mly" + (Ast_cocci.rulename) +# 25540 "parser_cocci_menhir.ml" + ) = +# 211 "parser_cocci_menhir.mly" + ( P.make_initial_script_rule_name_result lang ) +# 25544 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.semv = lang; + MenhirLib.EngineTypes.startp = _startpos_lang_; + MenhirLib.EngineTypes.endp = _endpos_lang_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let lang : 'tv_pure_ident = Obj.magic lang in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : ( +# 153 "parser_cocci_menhir.mly" + (Ast_cocci.rulename) +# 25580 "parser_cocci_menhir.ml" + ) = +# 213 "parser_cocci_menhir.mly" + ( P.make_final_script_rule_name_result lang ) +# 25584 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25460,7 +25624,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 47 "parser_cocci_menhir.mly" (string) -# 25464 "parser_cocci_menhir.ml" +# 25628 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let py : 'tv_pure_ident = Obj.magic py in let _startpos = _startpos_py_ in @@ -25468,11 +25632,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : ( # 159 "parser_cocci_menhir.mly" (string * (string * string)) -# 25472 "parser_cocci_menhir.ml" +# 25636 "parser_cocci_menhir.ml" ) = -# 1860 "parser_cocci_menhir.mly" +# 1873 "parser_cocci_menhir.mly" ( (P.id2name py, (_3, P.id2name cocci)) ) -# 25476 "parser_cocci_menhir.ml" +# 25640 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25493,14 +25657,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let x : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 25497 "parser_cocci_menhir.ml" +# 25661 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : 'tv_separated_nonempty_list_TComma_TString_ = # 144 "standard.mly" ( [ x ] ) -# 25504 "parser_cocci_menhir.ml" +# 25668 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25531,14 +25695,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let x : ( # 87 "parser_cocci_menhir.mly" (string * Data.clt) -# 25535 "parser_cocci_menhir.ml" +# 25699 "parser_cocci_menhir.ml" ) = Obj.magic x in let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : 'tv_separated_nonempty_list_TComma_TString_ = # 146 "standard.mly" ( x :: xs ) -# 25542 "parser_cocci_menhir.ml" +# 25706 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25562,7 +25726,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_any_strict_ = # 144 "standard.mly" ( [ x ] ) -# 25566 "parser_cocci_menhir.ml" +# 25730 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25596,7 +25760,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_any_strict_ = # 146 "standard.mly" ( x :: xs ) -# 25600 "parser_cocci_menhir.ml" +# 25764 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25620,7 +25784,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_ctype_ = # 144 "standard.mly" ( [ x ] ) -# 25624 "parser_cocci_menhir.ml" +# 25788 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25654,7 +25818,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_ctype_ = # 146 "standard.mly" ( x :: xs ) -# 25658 "parser_cocci_menhir.ml" +# 25822 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25678,7 +25842,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_d_ident_ = # 144 "standard.mly" ( [ x ] ) -# 25682 "parser_cocci_menhir.ml" +# 25846 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25712,7 +25876,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_d_ident_ = # 146 "standard.mly" ( x :: xs ) -# 25716 "parser_cocci_menhir.ml" +# 25880 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25736,7 +25900,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_dexpr_ = # 144 "standard.mly" ( [ x ] ) -# 25740 "parser_cocci_menhir.ml" +# 25904 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25770,7 +25934,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_dexpr_ = # 146 "standard.mly" ( x :: xs ) -# 25774 "parser_cocci_menhir.ml" +# 25938 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25794,7 +25958,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_ident_or_const_ = # 144 "standard.mly" ( [ x ] ) -# 25798 "parser_cocci_menhir.ml" +# 25962 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25828,7 +25992,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_ident_or_const_ = # 146 "standard.mly" ( x :: xs ) -# 25832 "parser_cocci_menhir.ml" +# 25996 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25852,7 +26016,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_meta_ident_ = # 144 "standard.mly" ( [ x ] ) -# 25856 "parser_cocci_menhir.ml" +# 26020 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25886,7 +26050,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_meta_ident_ = # 146 "standard.mly" ( x :: xs ) -# 25890 "parser_cocci_menhir.ml" +# 26054 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25910,7 +26074,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_ = # 144 "standard.mly" ( [ x ] ) -# 25914 "parser_cocci_menhir.ml" +# 26078 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25944,7 +26108,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_ = # 146 "standard.mly" ( x :: xs ) -# 25948 "parser_cocci_menhir.ml" +# 26112 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -25968,7 +26132,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_ = # 144 "standard.mly" ( [ x ] ) -# 25972 "parser_cocci_menhir.ml" +# 26136 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26002,7 +26166,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_ = # 146 "standard.mly" ( x :: xs ) -# 26006 "parser_cocci_menhir.ml" +# 26170 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26026,7 +26190,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_not_eq_not_ceq__ = # 144 "standard.mly" ( [ x ] ) -# 26030 "parser_cocci_menhir.ml" +# 26194 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26060,7 +26224,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_not_eq_not_ceq__ = # 146 "standard.mly" ( x :: xs ) -# 26064 "parser_cocci_menhir.ml" +# 26228 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26084,7 +26248,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_not_eq_not_eq__ = # 144 "standard.mly" ( [ x ] ) -# 26088 "parser_cocci_menhir.ml" +# 26252 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26118,7 +26282,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_not_eq_not_eq__ = # 146 "standard.mly" ( x :: xs ) -# 26122 "parser_cocci_menhir.ml" +# 26286 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26142,7 +26306,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_not_eq_not_eqe__ = # 144 "standard.mly" ( [ x ] ) -# 26146 "parser_cocci_menhir.ml" +# 26310 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26176,7 +26340,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_not_eq_not_eqe__ = # 146 "standard.mly" ( x :: xs ) -# 26180 "parser_cocci_menhir.ml" +# 26344 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26200,7 +26364,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_not_eq_not_pos__ = # 144 "standard.mly" ( [ x ] ) -# 26204 "parser_cocci_menhir.ml" +# 26368 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26234,7 +26398,65 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_not_eq_not_pos__ = # 146 "standard.mly" ( x :: xs ) -# 26238 "parser_cocci_menhir.ml" +# 26402 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : 'tv_pure_ident_or_meta_ident_with_seed = Obj.magic x in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = +# 144 "standard.mly" + ( [ x ] ) +# 26426 "parser_cocci_menhir.ml" + in + _menhir_env.MenhirLib.EngineTypes.stack <- { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = Obj.magic xs in + let x : 'tv_pure_ident_or_meta_ident_with_seed = Obj.magic x in + let _startpos = _startpos_x_ in + let _endpos = _endpos_xs_ in + let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = +# 146 "standard.mly" + ( x :: xs ) +# 26460 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26256,9 +26478,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_single_statement = -# 921 "parser_cocci_menhir.mly" +# 930 "parser_cocci_menhir.mly" ( _1 ) -# 26262 "parser_cocci_menhir.ml" +# 26484 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26289,24 +26511,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 26293 "parser_cocci_menhir.ml" +# 26515 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_midzero_list_statement_statement_ = Obj.magic _2 in let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 26299 "parser_cocci_menhir.ml" +# 26521 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_single_statement = -# 925 "parser_cocci_menhir.mly" +# 934 "parser_cocci_menhir.mly" ( let (mids,code) = _2 in Ast0.wrap (Ast0.Disj(P.clt2mcode "(" _1, List.map (function x -> Ast0.wrap(Ast0.DOTS([x]))) code, mids, P.clt2mcode ")" _3)) ) -# 26310 "parser_cocci_menhir.ml" +# 26532 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26328,9 +26550,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_statement = -# 848 "parser_cocci_menhir.mly" +# 857 "parser_cocci_menhir.mly" ( _1 ) -# 26334 "parser_cocci_menhir.ml" +# 26556 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26351,14 +26573,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 26355 "parser_cocci_menhir.ml" +# 26577 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_statement = -# 850 "parser_cocci_menhir.mly" +# 859 "parser_cocci_menhir.mly" ( P.meta_stm _1 ) -# 26362 "parser_cocci_menhir.ml" +# 26584 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26384,15 +26606,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 26388 "parser_cocci_menhir.ml" +# 26610 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_expr = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 852 "parser_cocci_menhir.mly" +# 861 "parser_cocci_menhir.mly" ( P.exp_stm _1 _2 ) -# 26396 "parser_cocci_menhir.ml" +# 26618 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26434,25 +26656,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 26438 "parser_cocci_menhir.ml" +# 26660 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 26444 "parser_cocci_menhir.ml" +# 26666 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26449 "parser_cocci_menhir.ml" +# 26671 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_statement = -# 854 "parser_cocci_menhir.mly" +# 863 "parser_cocci_menhir.mly" ( P.ifthen _1 _2 _3 _4 _5 ) -# 26456 "parser_cocci_menhir.ml" +# 26678 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26504,31 +26726,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _6 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26508 "parser_cocci_menhir.ml" +# 26730 "parser_cocci_menhir.ml" ) = Obj.magic _6 in let _5 : 'tv_single_statement = Obj.magic _5 in let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 26514 "parser_cocci_menhir.ml" +# 26736 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 26520 "parser_cocci_menhir.ml" +# 26742 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26525 "parser_cocci_menhir.ml" +# 26747 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__7_ in let _v : 'tv_statement = -# 856 "parser_cocci_menhir.mly" +# 865 "parser_cocci_menhir.mly" ( P.ifthenelse _1 _2 _3 _4 _5 _6 _7 ) -# 26532 "parser_cocci_menhir.ml" +# 26754 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26590,37 +26812,37 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _8 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 26594 "parser_cocci_menhir.ml" +# 26816 "parser_cocci_menhir.ml" ) = Obj.magic _8 in let _7 : 'tv_option_eexpr_ = Obj.magic _7 in let _6 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 26600 "parser_cocci_menhir.ml" +# 26822 "parser_cocci_menhir.ml" ) = Obj.magic _6 in let _5 : 'tv_option_eexpr_ = Obj.magic _5 in let _4 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 26606 "parser_cocci_menhir.ml" +# 26828 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_option_eexpr_ = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 26612 "parser_cocci_menhir.ml" +# 26834 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26617 "parser_cocci_menhir.ml" +# 26839 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__9_ in let _v : 'tv_statement = -# 859 "parser_cocci_menhir.mly" +# 868 "parser_cocci_menhir.mly" ( P.forloop _1 _2 _3 _4 _5 _6 _7 _8 _9 ) -# 26624 "parser_cocci_menhir.ml" +# 26846 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26662,25 +26884,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 26666 "parser_cocci_menhir.ml" +# 26888 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 26672 "parser_cocci_menhir.ml" +# 26894 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26677 "parser_cocci_menhir.ml" +# 26899 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_statement = -# 861 "parser_cocci_menhir.mly" +# 870 "parser_cocci_menhir.mly" ( P.whileloop _1 _2 _3 _4 _5 ) -# 26684 "parser_cocci_menhir.ml" +# 26906 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26731,36 +26953,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _7 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 26735 "parser_cocci_menhir.ml" +# 26957 "parser_cocci_menhir.ml" ) = Obj.magic _7 in let _6 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 26740 "parser_cocci_menhir.ml" +# 26962 "parser_cocci_menhir.ml" ) = Obj.magic _6 in let _5 : 'tv_eexpr = Obj.magic _5 in let _4 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 26746 "parser_cocci_menhir.ml" +# 26968 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26751 "parser_cocci_menhir.ml" +# 26973 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_single_statement = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26757 "parser_cocci_menhir.ml" +# 26979 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__7_ in let _v : 'tv_statement = -# 863 "parser_cocci_menhir.mly" +# 872 "parser_cocci_menhir.mly" ( P.doloop _1 _2 _3 _4 _5 _6 _7 ) -# 26764 "parser_cocci_menhir.ml" +# 26986 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26802,21 +27024,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 26806 "parser_cocci_menhir.ml" +# 27028 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr_list_option = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 26812 "parser_cocci_menhir.ml" +# 27034 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_iter_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : 'tv_statement = -# 865 "parser_cocci_menhir.mly" +# 874 "parser_cocci_menhir.mly" ( P.iterator _1 _2 _3 _4 _5 ) -# 26820 "parser_cocci_menhir.ml" +# 27042 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26867,36 +27089,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _7 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 26871 "parser_cocci_menhir.ml" +# 27093 "parser_cocci_menhir.ml" ) = Obj.magic _7 in let _6 : 'tv_list_case_line_ = Obj.magic _6 in let _5 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 26877 "parser_cocci_menhir.ml" +# 27099 "parser_cocci_menhir.ml" ) = Obj.magic _5 in let _4 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 26882 "parser_cocci_menhir.ml" +# 27104 "parser_cocci_menhir.ml" ) = Obj.magic _4 in let _3 : 'tv_eexpr = Obj.magic _3 in let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 26888 "parser_cocci_menhir.ml" +# 27110 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26893 "parser_cocci_menhir.ml" +# 27115 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__7_ in let _v : 'tv_statement = -# 867 "parser_cocci_menhir.mly" +# 876 "parser_cocci_menhir.mly" ( P.switch _1 _2 _3 _4 _5 _6 _7 ) -# 26900 "parser_cocci_menhir.ml" +# 27122 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26927,20 +27149,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 26931 "parser_cocci_menhir.ml" +# 27153 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_eexpr = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26937 "parser_cocci_menhir.ml" +# 27159 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_statement = -# 868 "parser_cocci_menhir.mly" +# 877 "parser_cocci_menhir.mly" ( P.ret_exp _1 _2 _3 ) -# 26944 "parser_cocci_menhir.ml" +# 27166 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -26966,19 +27188,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 26970 "parser_cocci_menhir.ml" +# 27192 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 57 "parser_cocci_menhir.mly" (Data.clt) -# 26975 "parser_cocci_menhir.ml" +# 27197 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 869 "parser_cocci_menhir.mly" +# 878 "parser_cocci_menhir.mly" ( P.ret _1 _2 ) -# 26982 "parser_cocci_menhir.ml" +# 27204 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27004,19 +27226,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 27008 "parser_cocci_menhir.ml" +# 27230 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 27013 "parser_cocci_menhir.ml" +# 27235 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 870 "parser_cocci_menhir.mly" +# 879 "parser_cocci_menhir.mly" ( P.break _1 _2 ) -# 27020 "parser_cocci_menhir.ml" +# 27242 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27042,19 +27264,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 27046 "parser_cocci_menhir.ml" +# 27268 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 27051 "parser_cocci_menhir.ml" +# 27273 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 871 "parser_cocci_menhir.mly" +# 880 "parser_cocci_menhir.mly" ( P.cont _1 _2 ) -# 27058 "parser_cocci_menhir.ml" +# 27280 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27080,15 +27302,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 27084 "parser_cocci_menhir.ml" +# 27306 "parser_cocci_menhir.ml" ) = Obj.magic _2 in let _1 : 'tv_ident = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_statement = -# 872 "parser_cocci_menhir.mly" +# 881 "parser_cocci_menhir.mly" ( P.label _1 _2 ) -# 27092 "parser_cocci_menhir.ml" +# 27314 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27119,20 +27341,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 27123 "parser_cocci_menhir.ml" +# 27345 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_ident = Obj.magic _2 in let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 27129 "parser_cocci_menhir.ml" +# 27351 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_statement = -# 873 "parser_cocci_menhir.mly" +# 882 "parser_cocci_menhir.mly" ( P.goto _1 _2 _3 ) -# 27136 "parser_cocci_menhir.ml" +# 27358 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27163,20 +27385,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 27167 "parser_cocci_menhir.ml" +# 27389 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_fun_start = Obj.magic _2 in let _1 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 27173 "parser_cocci_menhir.ml" +# 27395 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_statement = -# 875 "parser_cocci_menhir.mly" +# 884 "parser_cocci_menhir.mly" ( P.seq _1 _2 _3 ) -# 27180 "parser_cocci_menhir.ml" +# 27402 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27203,14 +27425,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 27207 "parser_cocci_menhir.ml" +# 27429 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_w_ in let _v : 'tv_stm_dots = -# 879 "parser_cocci_menhir.mly" +# 888 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Dots(P.clt2mcode "..." _1, List.concat w)) ) -# 27214 "parser_cocci_menhir.ml" +# 27436 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27246,22 +27468,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 27250 "parser_cocci_menhir.ml" +# 27472 "parser_cocci_menhir.ml" ) = Obj.magic c in let b : 'tv_nest_start = Obj.magic b in let w : 'tv_list_whenppdecs_ = Obj.magic w in let _1 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 27257 "parser_cocci_menhir.ml" +# 27479 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_c_ in let _v : 'tv_stm_dots = -# 881 "parser_cocci_menhir.mly" +# 890 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." _1, b, P.clt2mcode "...>" c, List.concat w, false)) ) -# 27265 "parser_cocci_menhir.ml" +# 27487 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27297,22 +27519,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 27301 "parser_cocci_menhir.ml" +# 27523 "parser_cocci_menhir.ml" ) = Obj.magic c in let b : 'tv_nest_start = Obj.magic b in let w : 'tv_list_whenppdecs_ = Obj.magic w in let _1 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 27308 "parser_cocci_menhir.ml" +# 27530 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos_c_ in let _v : 'tv_stm_dots = -# 884 "parser_cocci_menhir.mly" +# 893 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." _1, b, P.clt2mcode "...+>" c, List.concat w, true)) ) -# 27316 "parser_cocci_menhir.ml" +# 27538 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27333,14 +27555,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s : ( # 53 "parser_cocci_menhir.mly" (Data.clt) -# 27337 "parser_cocci_menhir.ml" +# 27559 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_storage = -# 806 "parser_cocci_menhir.mly" +# 815 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Static s ) -# 27344 "parser_cocci_menhir.ml" +# 27566 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27361,14 +27583,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s : ( # 53 "parser_cocci_menhir.mly" (Data.clt) -# 27365 "parser_cocci_menhir.ml" +# 27587 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_storage = -# 807 "parser_cocci_menhir.mly" +# 816 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Auto s ) -# 27372 "parser_cocci_menhir.ml" +# 27594 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27389,14 +27611,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s : ( # 53 "parser_cocci_menhir.mly" (Data.clt) -# 27393 "parser_cocci_menhir.ml" +# 27615 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_storage = -# 808 "parser_cocci_menhir.mly" +# 817 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Register s ) -# 27400 "parser_cocci_menhir.ml" +# 27622 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27417,14 +27639,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s : ( # 53 "parser_cocci_menhir.mly" (Data.clt) -# 27421 "parser_cocci_menhir.ml" +# 27643 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_storage = -# 809 "parser_cocci_menhir.mly" +# 818 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Extern s ) -# 27428 "parser_cocci_menhir.ml" +# 27650 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27444,9 +27666,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_struct_decl = -# 512 "parser_cocci_menhir.mly" +# 521 "parser_cocci_menhir.mly" ( [] ) -# 27450 "parser_cocci_menhir.ml" +# 27672 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27477,17 +27699,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 27481 "parser_cocci_menhir.ml" +# 27703 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let t : 'tv_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_pv_ in let _v : 'tv_struct_decl = -# 514 "parser_cocci_menhir.mly" +# 523 "parser_cocci_menhir.mly" ( let (id,fn) = d in [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] ) -# 27491 "parser_cocci_menhir.ml" +# 27713 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27548,40 +27770,40 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 27552 "parser_cocci_menhir.ml" +# 27774 "parser_cocci_menhir.ml" ) = Obj.magic pv in let rp2 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 27557 "parser_cocci_menhir.ml" +# 27779 "parser_cocci_menhir.ml" ) = Obj.magic rp2 in let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in let lp2 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 27563 "parser_cocci_menhir.ml" +# 27785 "parser_cocci_menhir.ml" ) = Obj.magic lp2 in let rp1 : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 27568 "parser_cocci_menhir.ml" +# 27790 "parser_cocci_menhir.ml" ) = Obj.magic rp1 in let d : 'tv_d_ident = Obj.magic d in let st : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 27574 "parser_cocci_menhir.ml" +# 27796 "parser_cocci_menhir.ml" ) = Obj.magic st in let lp1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 27579 "parser_cocci_menhir.ml" +# 27801 "parser_cocci_menhir.ml" ) = Obj.magic lp1 in let t : 'tv_fn_ctype = Obj.magic t in let _startpos = _startpos_t_ in let _endpos = _endpos_pv_ in let _v : 'tv_struct_decl = -# 518 "parser_cocci_menhir.mly" +# 527 "parser_cocci_menhir.mly" ( let (id,fn) = d in let t = Ast0.wrap @@ -27589,7 +27811,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1, P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] ) -# 27593 "parser_cocci_menhir.ml" +# 27815 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27620,7 +27842,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 27624 "parser_cocci_menhir.ml" +# 27846 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -27630,15 +27852,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 39 "standard.mly" ( None ) -# 27634 "parser_cocci_menhir.ml" +# 27856 "parser_cocci_menhir.ml" in -# 526 "parser_cocci_menhir.mly" +# 535 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in [Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv))] ) -# 27642 "parser_cocci_menhir.ml" +# 27864 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27674,7 +27896,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let pv : ( # 107 "parser_cocci_menhir.mly" (Data.clt) -# 27678 "parser_cocci_menhir.ml" +# 27900 "parser_cocci_menhir.ml" ) = Obj.magic pv in let d : 'tv_d_ident = Obj.magic d in let i : 'tv_pure_ident = Obj.magic i in @@ -27686,15 +27908,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct # 41 "standard.mly" ( Some x ) -# 27690 "parser_cocci_menhir.ml" +# 27912 "parser_cocci_menhir.ml" in -# 526 "parser_cocci_menhir.mly" +# 535 "parser_cocci_menhir.mly" ( let (id,fn) = d in let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in [Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv))] ) -# 27698 "parser_cocci_menhir.ml" +# 27920 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27716,9 +27938,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_struct_decl_list = -# 531 "parser_cocci_menhir.mly" +# 540 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1)) ) -# 27722 "parser_cocci_menhir.ml" +# 27944 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27740,9 +27962,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_struct_decl_list_start = -# 534 "parser_cocci_menhir.mly" +# 543 "parser_cocci_menhir.mly" ( _1 ) -# 27746 "parser_cocci_menhir.ml" +# 27968 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27770,9 +27992,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_struct_decl_list_start = -# 535 "parser_cocci_menhir.mly" +# 544 "parser_cocci_menhir.mly" ( _1@_2 ) -# 27776 "parser_cocci_menhir.ml" +# 27998 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27800,9 +28022,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_d_ in let _endpos = _endpos_r_ in let _v : 'tv_struct_decl_list_start = -# 537 "parser_cocci_menhir.mly" +# 546 "parser_cocci_menhir.mly" ( (P.mkddots "..." d)::r ) -# 27806 "parser_cocci_menhir.ml" +# 28028 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27823,14 +28045,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let s : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 27827 "parser_cocci_menhir.ml" +# 28049 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : 'tv_struct_or_union = -# 508 "parser_cocci_menhir.mly" +# 517 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Struct s ) -# 27834 "parser_cocci_menhir.ml" +# 28056 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27851,14 +28073,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let u : ( # 50 "parser_cocci_menhir.mly" (Data.clt) -# 27855 "parser_cocci_menhir.ml" +# 28077 "parser_cocci_menhir.ml" ) = Obj.magic u in let _startpos = _startpos_u_ in let _endpos = _endpos_u_ in let _v : 'tv_struct_or_union = -# 509 "parser_cocci_menhir.mly" +# 518 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Union u ) -# 27862 "parser_cocci_menhir.ml" +# 28084 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27880,9 +28102,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_top_eexpr = -# 1200 "parser_cocci_menhir.mly" +# 1209 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))) ) -# 27886 "parser_cocci_menhir.ml" +# 28108 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27913,20 +28135,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _3 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 27917 "parser_cocci_menhir.ml" +# 28139 "parser_cocci_menhir.ml" ) = Obj.magic _3 in let _2 : 'tv_initialize_list = Obj.magic _2 in let _1 : ( # 101 "parser_cocci_menhir.mly" (Data.clt) -# 27923 "parser_cocci_menhir.ml" +# 28145 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_top_init = -# 1638 "parser_cocci_menhir.mly" +# 1651 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) ) -# 27930 "parser_cocci_menhir.ml" +# 28152 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27941,9 +28163,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_toplevel_after_dots = -# 1626 "parser_cocci_menhir.mly" +# 1639 "parser_cocci_menhir.mly" ([]) -# 27947 "parser_cocci_menhir.ml" +# 28169 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27969,9 +28191,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots = -# 1627 "parser_cocci_menhir.mly" +# 1640 "parser_cocci_menhir.mly" (_2) -# 27975 "parser_cocci_menhir.ml" +# 28197 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -27999,9 +28221,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots = -# 1628 "parser_cocci_menhir.mly" +# 1641 "parser_cocci_menhir.mly" ((Ast0.wrap(Ast0.Exp(_1)))::_2) -# 28005 "parser_cocci_menhir.ml" +# 28227 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28029,9 +28251,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots = -# 1629 "parser_cocci_menhir.mly" +# 1642 "parser_cocci_menhir.mly" (_1@_2) -# 28035 "parser_cocci_menhir.ml" +# 28257 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28057,9 +28279,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots_init = -# 1617 "parser_cocci_menhir.mly" +# 1630 "parser_cocci_menhir.mly" (_2) -# 28063 "parser_cocci_menhir.ml" +# 28285 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28087,9 +28309,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots_init = -# 1618 "parser_cocci_menhir.mly" +# 1631 "parser_cocci_menhir.mly" ((Ast0.wrap(Ast0.Exp(_1)))::_2) -# 28093 "parser_cocci_menhir.ml" +# 28315 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28117,9 +28339,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_dots_init = -# 1619 "parser_cocci_menhir.mly" +# 1632 "parser_cocci_menhir.mly" (_1@_2) -# 28123 "parser_cocci_menhir.ml" +# 28345 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28134,9 +28356,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_toplevel_after_exp = -# 1622 "parser_cocci_menhir.mly" +# 1635 "parser_cocci_menhir.mly" ([]) -# 28140 "parser_cocci_menhir.ml" +# 28362 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28164,9 +28386,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_exp = -# 1623 "parser_cocci_menhir.mly" +# 1636 "parser_cocci_menhir.mly" (_1::_2) -# 28170 "parser_cocci_menhir.ml" +# 28392 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28181,9 +28403,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in let _endpos = _startpos in let _v : 'tv_toplevel_after_stm = -# 1632 "parser_cocci_menhir.mly" +# 1645 "parser_cocci_menhir.mly" ([]) -# 28187 "parser_cocci_menhir.ml" +# 28409 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28211,9 +28433,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_stm = -# 1633 "parser_cocci_menhir.mly" +# 1646 "parser_cocci_menhir.mly" (_1::_2) -# 28217 "parser_cocci_menhir.ml" +# 28439 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28241,9 +28463,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_after_stm = -# 1634 "parser_cocci_menhir.mly" +# 1647 "parser_cocci_menhir.mly" (_1@_2) -# 28247 "parser_cocci_menhir.ml" +# 28469 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28271,9 +28493,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = -# 1612 "parser_cocci_menhir.mly" +# 1625 "parser_cocci_menhir.mly" ( _1::_2 ) -# 28277 "parser_cocci_menhir.ml" +# 28499 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28301,9 +28523,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = -# 1613 "parser_cocci_menhir.mly" +# 1626 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.Exp(_1)))::_2 ) -# 28307 "parser_cocci_menhir.ml" +# 28529 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28331,9 +28553,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = -# 1614 "parser_cocci_menhir.mly" +# 1627 "parser_cocci_menhir.mly" ( _1@_2 ) -# 28337 "parser_cocci_menhir.ml" +# 28559 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28366,7 +28588,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let a0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28370 "parser_cocci_menhir.ml" +# 28592 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_b_ in @@ -28374,15 +28596,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 889 "parser_cocci_menhir.mly" +# 898 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Dots(P.clt2mcode "..." a, List.concat w)) ) -# 28380 "parser_cocci_menhir.ml" +# 28602 "parser_cocci_menhir.ml" in -# 1605 "parser_cocci_menhir.mly" +# 1618 "parser_cocci_menhir.mly" ( a::b ) -# 28386 "parser_cocci_menhir.ml" +# 28608 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28424,14 +28646,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28428 "parser_cocci_menhir.ml" +# 28650 "parser_cocci_menhir.ml" ) = Obj.magic c0 in let b0 : 'tv_nest_start = Obj.magic b0 in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28435 "parser_cocci_menhir.ml" +# 28657 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_b_ in @@ -28441,16 +28663,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 893 "parser_cocci_menhir.mly" +# 902 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." a, b, P.clt2mcode "...>" c, List.concat w, false)) ) -# 28448 "parser_cocci_menhir.ml" +# 28670 "parser_cocci_menhir.ml" in -# 1606 "parser_cocci_menhir.mly" +# 1619 "parser_cocci_menhir.mly" ( a::b ) -# 28454 "parser_cocci_menhir.ml" +# 28676 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28492,14 +28714,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28496 "parser_cocci_menhir.ml" +# 28718 "parser_cocci_menhir.ml" ) = Obj.magic c0 in let b0 : 'tv_nest_start = Obj.magic b0 in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28503 "parser_cocci_menhir.ml" +# 28725 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_b_ in @@ -28509,16 +28731,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 896 "parser_cocci_menhir.mly" +# 905 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." a, b, P.clt2mcode "...+>" c, List.concat w, true)) ) -# 28516 "parser_cocci_menhir.ml" +# 28738 "parser_cocci_menhir.ml" in -# 1606 "parser_cocci_menhir.mly" +# 1619 "parser_cocci_menhir.mly" ( a::b ) -# 28522 "parser_cocci_menhir.ml" +# 28744 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28554,14 +28776,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28558 "parser_cocci_menhir.ml" +# 28780 "parser_cocci_menhir.ml" ) = Obj.magic c0 in let b0 : 'tv_nest_start = Obj.magic b0 in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28565 "parser_cocci_menhir.ml" +# 28787 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_c0_ in @@ -28571,16 +28793,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 893 "parser_cocci_menhir.mly" +# 902 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." a, b, P.clt2mcode "...>" c, List.concat w, false)) ) -# 28578 "parser_cocci_menhir.ml" +# 28800 "parser_cocci_menhir.ml" in -# 1607 "parser_cocci_menhir.mly" +# 1620 "parser_cocci_menhir.mly" ( [a] ) -# 28584 "parser_cocci_menhir.ml" +# 28806 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28616,14 +28838,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let c0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28620 "parser_cocci_menhir.ml" +# 28842 "parser_cocci_menhir.ml" ) = Obj.magic c0 in let b0 : 'tv_nest_start = Obj.magic b0 in let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in let a0 : ( # 73 "parser_cocci_menhir.mly" (Data.clt) -# 28627 "parser_cocci_menhir.ml" +# 28849 "parser_cocci_menhir.ml" ) = Obj.magic a0 in let _startpos = _startpos_a0_ in let _endpos = _endpos_c0_ in @@ -28633,16 +28855,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let w = w0 in let a = a0 in -# 896 "parser_cocci_menhir.mly" +# 905 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." a, b, P.clt2mcode "...+>" c, List.concat w, true)) ) -# 28640 "parser_cocci_menhir.ml" +# 28862 "parser_cocci_menhir.ml" in -# 1607 "parser_cocci_menhir.mly" +# 1620 "parser_cocci_menhir.mly" ( [a] ) -# 28646 "parser_cocci_menhir.ml" +# 28868 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28670,9 +28892,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_startne_toplevel_after_dots_init_ = -# 1608 "parser_cocci_menhir.mly" +# 1621 "parser_cocci_menhir.mly" ( (Ast0.wrap(Ast0.Exp(_1)))::_2 ) -# 28676 "parser_cocci_menhir.ml" +# 28898 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28700,9 +28922,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_toplevel_seq_startne_toplevel_after_dots_init_ = -# 1609 "parser_cocci_menhir.mly" +# 1622 "parser_cocci_menhir.mly" ( _1@_2 ) -# 28706 "parser_cocci_menhir.ml" +# 28928 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28724,9 +28946,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_typedef_ident = -# 1517 "parser_cocci_menhir.mly" +# 1530 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.TypeName(P.id2mcode _1)) ) -# 28730 "parser_cocci_menhir.ml" +# 28952 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28747,15 +28969,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 64 "parser_cocci_menhir.mly" (Parse_aux.info) -# 28751 "parser_cocci_menhir.ml" +# 28973 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_typedef_ident = -# 1519 "parser_cocci_menhir.mly" +# 1532 "parser_cocci_menhir.mly" ( let (nm,pure,clt) = _1 in Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) ) -# 28759 "parser_cocci_menhir.ml" +# 28981 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28777,9 +28999,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1289 "parser_cocci_menhir.mly" +# 1298 "parser_cocci_menhir.mly" ( _1 ) -# 28783 "parser_cocci_menhir.ml" +# 29005 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28806,14 +29028,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 28810 "parser_cocci_menhir.ml" +# 29032 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1291 "parser_cocci_menhir.mly" +# 1300 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) ) -# 28817 "parser_cocci_menhir.ml" +# 29039 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28840,14 +29062,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 28844 "parser_cocci_menhir.ml" +# 29066 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1293 "parser_cocci_menhir.mly" +# 1302 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) ) -# 28851 "parser_cocci_menhir.ml" +# 29073 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28875,9 +29097,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1295 "parser_cocci_menhir.mly" +# 1304 "parser_cocci_menhir.mly" ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 28881 "parser_cocci_menhir.ml" +# 29103 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28904,15 +29126,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 28908 "parser_cocci_menhir.ml" +# 29130 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1297 "parser_cocci_menhir.mly" +# 1306 "parser_cocci_menhir.mly" ( let mcode = P.clt2mcode Ast.Not _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 28916 "parser_cocci_menhir.ml" +# 29138 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28939,14 +29161,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 28943 "parser_cocci_menhir.ml" +# 29165 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1300 "parser_cocci_menhir.mly" +# 1309 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) ) -# 28950 "parser_cocci_menhir.ml" +# 29172 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -28982,27 +29204,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 28986 "parser_cocci_menhir.ml" +# 29208 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 28992 "parser_cocci_menhir.ml" +# 29214 "parser_cocci_menhir.ml" ) = Obj.magic lp in let s : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 28997 "parser_cocci_menhir.ml" +# 29219 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_rp_ in let _v : 'tv_unary_expr_eexpr_dot_expressions_ = -# 1302 "parser_cocci_menhir.mly" +# 1311 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s, P.clt2mcode "(" lp,t, P.clt2mcode ")" rp)) ) -# 29006 "parser_cocci_menhir.ml" +# 29228 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29024,9 +29246,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1289 "parser_cocci_menhir.mly" +# 1298 "parser_cocci_menhir.mly" ( _1 ) -# 29030 "parser_cocci_menhir.ml" +# 29252 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29053,14 +29275,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 29057 "parser_cocci_menhir.ml" +# 29279 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1291 "parser_cocci_menhir.mly" +# 1300 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) ) -# 29064 "parser_cocci_menhir.ml" +# 29286 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29087,14 +29309,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 29091 "parser_cocci_menhir.ml" +# 29313 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1293 "parser_cocci_menhir.mly" +# 1302 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) ) -# 29098 "parser_cocci_menhir.ml" +# 29320 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29122,9 +29344,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1295 "parser_cocci_menhir.mly" +# 1304 "parser_cocci_menhir.mly" ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 29128 "parser_cocci_menhir.ml" +# 29350 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29151,15 +29373,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 29155 "parser_cocci_menhir.ml" +# 29377 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1297 "parser_cocci_menhir.mly" +# 1306 "parser_cocci_menhir.mly" ( let mcode = P.clt2mcode Ast.Not _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 29163 "parser_cocci_menhir.ml" +# 29385 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29186,14 +29408,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 29190 "parser_cocci_menhir.ml" +# 29412 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1300 "parser_cocci_menhir.mly" +# 1309 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) ) -# 29197 "parser_cocci_menhir.ml" +# 29419 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29229,27 +29451,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 29233 "parser_cocci_menhir.ml" +# 29455 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 29239 "parser_cocci_menhir.ml" +# 29461 "parser_cocci_menhir.ml" ) = Obj.magic lp in let s : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 29244 "parser_cocci_menhir.ml" +# 29466 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_rp_ in let _v : 'tv_unary_expr_eexpr_invalid_ = -# 1302 "parser_cocci_menhir.mly" +# 1311 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s, P.clt2mcode "(" lp,t, P.clt2mcode ")" rp)) ) -# 29253 "parser_cocci_menhir.ml" +# 29475 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29271,9 +29493,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1289 "parser_cocci_menhir.mly" +# 1298 "parser_cocci_menhir.mly" ( _1 ) -# 29277 "parser_cocci_menhir.ml" +# 29499 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29300,14 +29522,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 29304 "parser_cocci_menhir.ml" +# 29526 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1291 "parser_cocci_menhir.mly" +# 1300 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) ) -# 29311 "parser_cocci_menhir.ml" +# 29533 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29334,14 +29556,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 29338 "parser_cocci_menhir.ml" +# 29560 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1293 "parser_cocci_menhir.mly" +# 1302 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) ) -# 29345 "parser_cocci_menhir.ml" +# 29567 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29369,9 +29591,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1295 "parser_cocci_menhir.mly" +# 1304 "parser_cocci_menhir.mly" ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 29375 "parser_cocci_menhir.ml" +# 29597 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29398,15 +29620,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 29402 "parser_cocci_menhir.ml" +# 29624 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1297 "parser_cocci_menhir.mly" +# 1306 "parser_cocci_menhir.mly" ( let mcode = P.clt2mcode Ast.Not _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 29410 "parser_cocci_menhir.ml" +# 29632 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29433,14 +29655,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 29437 "parser_cocci_menhir.ml" +# 29659 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1300 "parser_cocci_menhir.mly" +# 1309 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) ) -# 29444 "parser_cocci_menhir.ml" +# 29666 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29476,27 +29698,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 29480 "parser_cocci_menhir.ml" +# 29702 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 29486 "parser_cocci_menhir.ml" +# 29708 "parser_cocci_menhir.ml" ) = Obj.magic lp in let s : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 29491 "parser_cocci_menhir.ml" +# 29713 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_rp_ in let _v : 'tv_unary_expr_eexpr_nest_expressions_ = -# 1302 "parser_cocci_menhir.mly" +# 1311 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s, P.clt2mcode "(" lp,t, P.clt2mcode ")" rp)) ) -# 29500 "parser_cocci_menhir.ml" +# 29722 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29518,9 +29740,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1289 "parser_cocci_menhir.mly" +# 1298 "parser_cocci_menhir.mly" ( _1 ) -# 29524 "parser_cocci_menhir.ml" +# 29746 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29547,14 +29769,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 29551 "parser_cocci_menhir.ml" +# 29773 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1291 "parser_cocci_menhir.mly" +# 1300 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) ) -# 29558 "parser_cocci_menhir.ml" +# 29780 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29581,14 +29803,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 85 "parser_cocci_menhir.mly" (Data.clt) -# 29585 "parser_cocci_menhir.ml" +# 29807 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1293 "parser_cocci_menhir.mly" +# 1302 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) ) -# 29592 "parser_cocci_menhir.ml" +# 29814 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29616,9 +29838,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1295 "parser_cocci_menhir.mly" +# 1304 "parser_cocci_menhir.mly" ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 29622 "parser_cocci_menhir.ml" +# 29844 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29645,15 +29867,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 29649 "parser_cocci_menhir.ml" +# 29871 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1297 "parser_cocci_menhir.mly" +# 1306 "parser_cocci_menhir.mly" ( let mcode = P.clt2mcode Ast.Not _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) ) -# 29657 "parser_cocci_menhir.ml" +# 29879 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29680,14 +29902,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 29684 "parser_cocci_menhir.ml" +# 29906 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1300 "parser_cocci_menhir.mly" +# 1309 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) ) -# 29691 "parser_cocci_menhir.ml" +# 29913 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29723,27 +29945,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rp : ( # 77 "parser_cocci_menhir.mly" (Data.clt) -# 29727 "parser_cocci_menhir.ml" +# 29949 "parser_cocci_menhir.ml" ) = Obj.magic rp in let t : 'tv_ctype = Obj.magic t in let lp : ( # 76 "parser_cocci_menhir.mly" (Data.clt) -# 29733 "parser_cocci_menhir.ml" +# 29955 "parser_cocci_menhir.ml" ) = Obj.magic lp in let s : ( # 58 "parser_cocci_menhir.mly" (Data.clt) -# 29738 "parser_cocci_menhir.ml" +# 29960 "parser_cocci_menhir.ml" ) = Obj.magic s in let _startpos = _startpos_s_ in let _endpos = _endpos_rp_ in let _v : 'tv_unary_expr_expr_invalid_ = -# 1302 "parser_cocci_menhir.mly" +# 1311 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s, P.clt2mcode "(" lp,t, P.clt2mcode ")" rp)) ) -# 29747 "parser_cocci_menhir.ml" +# 29969 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29764,14 +29986,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 93 "parser_cocci_menhir.mly" (Data.clt) -# 29768 "parser_cocci_menhir.ml" +# 29990 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1306 "parser_cocci_menhir.mly" +# 1315 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.GetRef _1 ) -# 29775 "parser_cocci_menhir.ml" +# 29997 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29792,14 +30014,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 29796 "parser_cocci_menhir.ml" +# 30018 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1307 "parser_cocci_menhir.mly" +# 1316 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.DeRef _1 ) -# 29803 "parser_cocci_menhir.ml" +# 30025 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29820,14 +30042,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 29824 "parser_cocci_menhir.ml" +# 30046 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1308 "parser_cocci_menhir.mly" +# 1317 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.UnPlus _1 ) -# 29831 "parser_cocci_menhir.ml" +# 30053 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29848,14 +30070,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 98 "parser_cocci_menhir.mly" (Data.clt) -# 29852 "parser_cocci_menhir.ml" +# 30074 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1309 "parser_cocci_menhir.mly" +# 1318 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.UnMinus _1 ) -# 29859 "parser_cocci_menhir.ml" +# 30081 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29876,14 +30098,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _1 : ( # 99 "parser_cocci_menhir.mly" (Data.clt) -# 29880 "parser_cocci_menhir.ml" +# 30102 "parser_cocci_menhir.ml" ) = Obj.magic _1 in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : 'tv_unary_op = -# 1310 "parser_cocci_menhir.mly" +# 1319 "parser_cocci_menhir.mly" ( P.clt2mcode Ast.Tilde _1 ) -# 29887 "parser_cocci_menhir.ml" +# 30109 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29911,9 +30133,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_when_start = -# 1731 "parser_cocci_menhir.mly" +# 1744 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS((Ast0.wrap(Ast0.Exp(_1)))::_2)) ) -# 29917 "parser_cocci_menhir.ml" +# 30139 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29941,9 +30163,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : 'tv_when_start = -# 1733 "parser_cocci_menhir.mly" +# 1746 "parser_cocci_menhir.mly" ( Ast0.wrap(Ast0.DOTS(_1@_2)) ) -# 29947 "parser_cocci_menhir.ml" +# 30169 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -29965,9 +30187,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos_w_ in let _endpos = _endpos_w_ in let _v : 'tv_whenppdecs = -# 900 "parser_cocci_menhir.mly" +# 909 "parser_cocci_menhir.mly" ( w ) -# 29971 "parser_cocci_menhir.ml" +# 30193 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30001,9 +30223,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_whens_when_start_rule_elem_statement_ = -# 1799 "parser_cocci_menhir.mly" +# 1812 "parser_cocci_menhir.mly" ( [Ast0.WhenNot w] ) -# 30007 "parser_cocci_menhir.ml" +# 30229 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30037,9 +30259,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_whens_when_start_rule_elem_statement_ = -# 1800 "parser_cocci_menhir.mly" +# 1813 "parser_cocci_menhir.mly" ( [Ast0.WhenAlways w] ) -# 30043 "parser_cocci_menhir.ml" +# 30265 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30069,9 +30291,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : 'tv_whens_when_start_rule_elem_statement_ = -# 1802 "parser_cocci_menhir.mly" +# 1815 "parser_cocci_menhir.mly" ( List.map (function x -> Ast0.WhenModifier(x)) _2 ) -# 30075 "parser_cocci_menhir.ml" +# 30297 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30105,9 +30327,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_whens_when_start_rule_elem_statement_ = -# 1803 "parser_cocci_menhir.mly" +# 1816 "parser_cocci_menhir.mly" ( [Ast0.WhenNotTrue e] ) -# 30111 "parser_cocci_menhir.ml" +# 30333 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30141,9 +30363,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : 'tv_whens_when_start_rule_elem_statement_ = -# 1804 "parser_cocci_menhir.mly" +# 1817 "parser_cocci_menhir.mly" ( [Ast0.WhenNotFalse e] ) -# 30147 "parser_cocci_menhir.ml" +# 30369 "parser_cocci_menhir.ml" in _menhir_env.MenhirLib.EngineTypes.stack <- { MenhirLib.EngineTypes.state = _menhir_s; @@ -30164,82 +30386,82 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct let rec script_meta_main = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1534 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1549 lexer lexbuf) : ( # 159 "parser_cocci_menhir.mly" (string * (string * string)) -# 30171 "parser_cocci_menhir.ml" +# 30393 "parser_cocci_menhir.ml" )) and rule_name = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1470 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1477 lexer lexbuf) : ( # 153 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 30179 "parser_cocci_menhir.ml" +# 30401 "parser_cocci_menhir.ml" )) and reinit = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1468 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1475 lexer lexbuf) : ( # 131 "parser_cocci_menhir.mly" (unit) -# 30187 "parser_cocci_menhir.ml" +# 30409 "parser_cocci_menhir.ml" )) and plus_main = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1432 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1439 lexer lexbuf) : ( # 140 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 30195 "parser_cocci_menhir.ml" +# 30417 "parser_cocci_menhir.ml" )) and plus_exp_main = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1423 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1430 lexer lexbuf) : ( # 143 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 30203 "parser_cocci_menhir.ml" +# 30425 "parser_cocci_menhir.ml" )) and never_used = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1417 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1424 lexer lexbuf) : ( # 168 "parser_cocci_menhir.mly" (unit) -# 30211 "parser_cocci_menhir.ml" +# 30433 "parser_cocci_menhir.ml" )) and minus_main = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1331 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1338 lexer lexbuf) : ( # 134 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 30219 "parser_cocci_menhir.ml" +# 30441 "parser_cocci_menhir.ml" )) and minus_exp_main = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1307 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1314 lexer lexbuf) : ( # 137 "parser_cocci_menhir.mly" (Ast0_cocci.rule) -# 30227 "parser_cocci_menhir.ml" +# 30449 "parser_cocci_menhir.ml" )) and meta_main = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1304 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1311 lexer lexbuf) : ( # 157 "parser_cocci_menhir.mly" ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list) -# 30235 "parser_cocci_menhir.ml" +# 30457 "parser_cocci_menhir.ml" )) and iso_rule_name = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry 1300 lexer lexbuf) : ( + (Obj.magic (MenhirInterpreter.entry 1307 lexer lexbuf) : ( # 149 "parser_cocci_menhir.mly" (Ast_cocci.rulename) -# 30243 "parser_cocci_menhir.ml" +# 30465 "parser_cocci_menhir.ml" )) and iso_meta_main = @@ -30247,7 +30469,7 @@ and iso_meta_main = (Obj.magic (MenhirInterpreter.entry 1104 lexer lexbuf) : ( # 165 "parser_cocci_menhir.mly" ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list) -# 30251 "parser_cocci_menhir.ml" +# 30473 "parser_cocci_menhir.ml" )) and iso_main = @@ -30255,7 +30477,7 @@ and iso_main = (Obj.magic (MenhirInterpreter.entry 10 lexer lexbuf) : ( # 162 "parser_cocci_menhir.mly" (Ast0_cocci.anything list list) -# 30259 "parser_cocci_menhir.ml" +# 30481 "parser_cocci_menhir.ml" )) and include_main = @@ -30263,7 +30485,7 @@ and include_main = (Obj.magic (MenhirInterpreter.entry 0 lexer lexbuf) : ( # 146 "parser_cocci_menhir.mly" ((string,string) Common.either list) -# 30267 "parser_cocci_menhir.ml" +# 30489 "parser_cocci_menhir.ml" )) diff --git a/parsing_cocci/parser_cocci_menhir.mli b/parsing_cocci/parser_cocci_menhir.mli index c93d0eb..ea76966 100644 --- a/parsing_cocci/parser_cocci_menhir.mli +++ b/parsing_cocci/parser_cocci_menhir.mli @@ -113,6 +113,7 @@ type token = | TIso | TInvalid | TInt of (string * Data.clt) + | TInitialize | TInitialiser | TIncludeNL of (string * Data.clt) | TIncludeL of (string * Data.clt) @@ -129,6 +130,7 @@ type token = | TForall | TFor of (Data.clt) | TFloat of (string * Data.clt) + | TFinalize | TExtends | TExpression | TExists diff --git a/parsing_cocci/parser_cocci_menhir.mly b/parsing_cocci/parser_cocci_menhir.mly index a72182a..151401b 100644 --- a/parsing_cocci/parser_cocci_menhir.mly +++ b/parsing_cocci/parser_cocci_menhir.mly @@ -43,7 +43,7 @@ module P = Parse_aux %token TPure TContext TGenerated %token TTypedef TDeclarer TIterator TName TPosition TPosAny %token TUsing TDisable TExtends TDepends TOn TEver TNever TExists TForall -%token TScript TReverse TNothing +%token TScript TInitialize TFinalize TReverse TNothing %token TRuleName %token Tchar Tshort Tint Tdouble Tfloat Tlong @@ -207,6 +207,10 @@ rule_name: { P.make_generated_rule_name_result None d i a e ee } | TScript TDotDot lang=pure_ident d=depends TArob { P.make_script_rule_name_result lang d } + | TInitialize TDotDot lang=pure_ident TArob + { P.make_initial_script_rule_name_result lang } + | TFinalize TDotDot lang=pure_ident TArob + { P.make_final_script_rule_name_result lang } extends: /* empty */ { () } @@ -257,6 +261,9 @@ metadec: ar=arity ispure=pure kindfn=metakind ids=comma_list(pure_ident_or_meta_ident) TMPtVirg { P.create_metadec ar ispure kindfn ids } +| kindfn=metakind_fresh ids=comma_list(pure_ident_or_meta_ident_with_seed) + TMPtVirg + { P.create_fresh_metadec kindfn ids } | ar=arity ispure=pure kindfn=metakind_atomic ids=comma_list(pure_ident_or_meta_ident_with_not_eq(not_eq)) TMPtVirg @@ -300,12 +307,14 @@ metadec: !Data.add_explist_meta name (Some lenname) pure; tok) id ids } -%inline metakind: +%inline metakind_fresh: TFresh TIdentifier - { (fun arity name pure check_meta -> - let tok = check_meta(Ast.MetaFreshIdDecl(arity,name)) in - !Data.add_id_meta name [] pure; tok) } -| TParameter + { (fun name check_meta seed -> + let tok = check_meta(Ast.MetaFreshIdDecl(name,seed)) in + !Data.add_fresh_id_meta name; tok) } + +%inline metakind: + TParameter { (fun arity name pure check_meta -> let tok = check_meta(Ast.MetaParamDecl(arity,name)) in !Data.add_param_meta name pure; tok) } @@ -1396,6 +1405,10 @@ pure_ident_or_meta_ident: | TType { (None,"type") } | TName { (None,"name") } +pure_ident_or_meta_ident_with_seed: + pure_ident_or_meta_ident { ($1,None) } + | pure_ident_or_meta_ident TEq s=TString { ($1,Some (P.id2name s)) } + pure_ident_or_meta_ident_with_not_eq(not_eq): i=pure_ident_or_meta_ident l=loption(not_eq) { (i,l) } diff --git a/parsing_cocci/pretty_print_cocci.ml b/parsing_cocci/pretty_print_cocci.ml index 9476554..cc133bd 100644 --- a/parsing_cocci/pretty_print_cocci.ml +++ b/parsing_cocci/pretty_print_cocci.ml @@ -815,36 +815,54 @@ let rec dep in_and = function let unparse z = match z with - Ast.ScriptRule (lang,deps,bindings,code) -> - print_string "@@"; - force_newline(); - print_string ("script:" ^ lang); - (match deps with - Ast.NoDep -> () - | _ -> print_string " depends on "; dep true deps); - force_newline(); - print_string "@@"; - force_newline(); - print_string code; - force_newline() + Ast.InitialScriptRule (lang,code) -> + print_string "@@"; + force_newline(); + print_string ("initialize:" ^ lang); + force_newline(); + print_string "@@"; + force_newline(); + print_string code; + force_newline() + | Ast.FinalScriptRule (lang,code) -> + print_string "@@"; + force_newline(); + print_string ("finalize:" ^ lang); + force_newline(); + print_string "@@"; + force_newline(); + print_string code; + force_newline() + | Ast.ScriptRule (lang,deps,bindings,code) -> + print_string "@@"; + force_newline(); + print_string ("script:" ^ lang); + (match deps with + Ast.NoDep -> () + | _ -> print_string " depends on "; dep true deps); + force_newline(); + print_string "@@"; + force_newline(); + print_string code; + force_newline() | Ast.CocciRule (nm, (deps, drops, exists), x, _, _) -> - print_string "@@"; - force_newline(); - print_string nm; - (match deps with - Ast.NoDep -> () - | _ -> print_string " depends on "; dep true deps); + print_string "@@"; + force_newline(); + print_string nm; + (match deps with + Ast.NoDep -> () + | _ -> print_string " depends on "; dep true deps); (* print_string "line "; print_int (Ast.get_line (List.hd x)); *) - force_newline(); - print_string "@@"; - print_newlines_disj := true; - force_newline(); - force_newline(); - rule x; - force_newline() + force_newline(); + print_string "@@"; + print_newlines_disj := true; + force_newline(); + force_newline(); + rule x; + force_newline() let rule_elem_to_string x = print_newlines_disj := true; diff --git a/parsing_cocci/simple_assignments.ml b/parsing_cocci/simple_assignments.ml index 20a9939..f7029ba 100644 --- a/parsing_cocci/simple_assignments.ml +++ b/parsing_cocci/simple_assignments.ml @@ -23,6 +23,7 @@ module Ast0 = Ast0_cocci module Ast = Ast_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types (* find assignments that can match an initialization *) @@ -103,16 +104,11 @@ let rec exp mc e1 = | _ -> e1 let simple_assignments l = - let mcode x = x in - let donothing r k e = k e in let statement r k e = match Ast0.unwrap e with Ast0.Exp(e1) -> Ast0.rewrap e (Ast0.Exp(exp (Ast0.get_mcodekind e) e1)) | _ -> k e in let fn = V0.rebuilder - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - donothing donothing donothing donothing donothing donothing statement - donothing donothing in - List.map fn.V0.rebuilder_top_level l + {V0.rebuilder_functions with VT0.rebuilder_stmtfn = statement} in + List.map fn.VT0.rebuilder_rec_top_level l diff --git a/parsing_cocci/single_statement.ml b/parsing_cocci/single_statement.ml index d768632..4209f2f 100644 --- a/parsing_cocci/single_statement.ml +++ b/parsing_cocci/single_statement.ml @@ -26,6 +26,7 @@ may need a special treatment if they are if branches *) module Ast0 = Ast0_cocci module Ast = Ast_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types (* --------------------------------------------------------------------- *) (* --------------------------------------------------------------------- *) @@ -311,7 +312,7 @@ let rec adding_something s = let (text,tinfo1,tinfo2) = !mc in (match text with Ast.NOTHING -> false | _ -> true) | Ast0.MIXED(_) -> - not(contains_only_minus.V0.combiner_statement s) (*&& + not(contains_only_minus.VT0.combiner_rec_statement s) (*&& (left_statement s) or (right_statement s)*) | _ -> failwith "unexpected plus code" @@ -339,31 +340,31 @@ and contains_only_minus = mcodekind (Ast0.get_mcodekind e) && match Ast0.unwrap e with Ast0.DisjExpr(starter,expr_list,mids,ender) -> - List.for_all r.V0.combiner_expression expr_list + List.for_all r.VT0.combiner_rec_expression expr_list | _ -> k e in let declaration r k e = mcodekind (Ast0.get_mcodekind e) && match Ast0.unwrap e with Ast0.DisjDecl(starter,decls,mids,ender) -> - List.for_all r.V0.combiner_declaration decls + List.for_all r.VT0.combiner_rec_declaration decls | _ -> k e in let typeC r k e = mcodekind (Ast0.get_mcodekind e) && match Ast0.unwrap e with Ast0.DisjType(starter,types,mids,ender) -> - List.for_all r.V0.combiner_typeC types + List.for_all r.VT0.combiner_rec_typeC types | _ -> k e in let statement r k e = mcodekind (Ast0.get_mcodekind e) && match Ast0.unwrap e with Ast0.Disj(starter,statement_dots_list,mids,ender) -> - List.for_all r.V0.combiner_statement_dots statement_dots_list + List.for_all r.VT0.combiner_rec_statement_dots statement_dots_list | _ -> k e in - V0.combiner bind option_default + V0.flat_combiner bind option_default mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode dots dots dots dots dots dots donothing expression typeC donothing donothing declaration @@ -387,7 +388,8 @@ branch, so the braces get added in oddly. *) let add_braces orig_s = - let s = (Iso_pattern.rebuild_mcode None).V0.rebuilder_statement orig_s in + let s = + (Iso_pattern.rebuild_mcode None).VT0.rebuilder_rec_statement orig_s in let new_mcodekind = match Ast0.get_mcodekind s with Ast0.MINUS(mc) -> diff --git a/parsing_cocci/test_exps.ml b/parsing_cocci/test_exps.ml index d73988c..9dede4f 100644 --- a/parsing_cocci/test_exps.ml +++ b/parsing_cocci/test_exps.ml @@ -23,6 +23,7 @@ module Ast = Ast_cocci module Ast0 = Ast0_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types (* call set_test_pos on test expressions *) @@ -42,9 +43,6 @@ let rec process_exp e = | _ -> e let set_test_poss = - let donothing r k e = k e in - let mcode x = x in - let expression r k e = let e = k e in match Ast0.unwrap e with @@ -87,12 +85,10 @@ let set_test_poss = | _ -> s in V0.rebuilder - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - donothing expression donothing donothing donothing donothing statement - donothing donothing + {V0.rebuilder_functions with + VT0.rebuilder_exprfn = expression; VT0.rebuilder_stmtfn = statement} -let process = List.map set_test_poss.V0.rebuilder_top_level +let process = List.map set_test_poss.VT0.rebuilder_rec_top_level -let process_anything = set_test_poss.V0.rebuilder_anything +let process_anything = set_test_poss.VT0.rebuilder_rec_anything diff --git a/parsing_cocci/type_infer.ml b/parsing_cocci/type_infer.ml index ea30ec3..d98ed7b 100644 --- a/parsing_cocci/type_infer.ml +++ b/parsing_cocci/type_infer.ml @@ -24,6 +24,7 @@ module T = Type_cocci module Ast = Ast_cocci module Ast0 = Ast0_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types (* Type inference: Just propagates information based on declarations. Could try to infer @@ -93,8 +94,6 @@ let rec propagate_types env = let option_default = None in let bind x y = option_default in (* no generic way of combining types *) - let mcode x = option_default in - let ident r k i = match Ast0.unwrap i with Ast0.Id(id) -> @@ -248,22 +247,20 @@ let rec propagate_types env = List.iter (function e -> Ast0.set_type e (Some t)) exp_list; Some t) | Ast0.NestExpr(starter,expr_dots,ender,None,multi) -> - let _ = r.V0.combiner_expression_dots expr_dots in None + let _ = r.VT0.combiner_rec_expression_dots expr_dots in None | Ast0.NestExpr(starter,expr_dots,ender,Some e,multi) -> - let _ = r.V0.combiner_expression_dots expr_dots in - let _ = r.V0.combiner_expression e in None + let _ = r.VT0.combiner_rec_expression_dots expr_dots in + let _ = r.VT0.combiner_rec_expression e in None | Ast0.Edots(_,None) | Ast0.Ecircles(_,None) | Ast0.Estars(_,None) -> None | Ast0.Edots(_,Some e) | Ast0.Ecircles(_,Some e) | Ast0.Estars(_,Some e) -> - let _ = r.V0.combiner_expression e in None + let _ = r.VT0.combiner_rec_expression e in None | Ast0.OptExp(exp) -> Ast0.get_type exp | Ast0.UniqueExp(exp) -> Ast0.get_type exp in Ast0.set_type e ty; ty in - let donothing r k e = k e in - let rec strip id = match Ast0.unwrap id with Ast0.Id(name) -> Id(Ast0.unwrap_mcode name) @@ -292,7 +289,7 @@ let rec propagate_types env = match Ast0.unwrap decl with Ast0.Init(_,ty,id,_,exp,_) -> let _ = - (propagate_types acc).V0.combiner_initialiser exp in + (propagate_types acc).VT0.combiner_rec_initialiser exp in [(strip id,Ast0.ast0_type_to_type ty)] | Ast0.UnInit(_,ty,id,_) -> [(strip id,Ast0.ast0_type_to_type ty)] @@ -310,8 +307,8 @@ let rec propagate_types env = | Ast0.Dots(_,wc) -> (* why is this case here? why is there none for nests? *) List.iter - (process_whencode r.V0.combiner_statement_dots - r.V0.combiner_statement r.V0.combiner_expression) + (process_whencode r.VT0.combiner_rec_statement_dots + r.VT0.combiner_rec_statement r.VT0.combiner_rec_expression) wc; process_statement_list r acc ss | Ast0.Disj(_,statement_dots_list,_,_) -> @@ -322,7 +319,7 @@ let rec propagate_types env = statement_dots_list) in process_statement_list r new_acc ss | _ -> - let _ = (propagate_types acc).V0.combiner_statement s in + let _ = (propagate_types acc).VT0.combiner_rec_statement s in process_statement_list r acc ss) in let statement_dots r k d = @@ -339,7 +336,7 @@ let rec propagate_types env = | Ast0.OptParam(param) -> get_binding param | _ -> [] in let fenv = List.concat (List.map get_binding (Ast0.undots params)) in - (propagate_types (fenv@env)).V0.combiner_statement_dots body + (propagate_types (fenv@env)).VT0.combiner_rec_statement_dots body | Ast0.IfThen(_,_,exp,_,_,_) | Ast0.IfThenElse(_,_,exp,_,_,_,_,_) | Ast0.While(_,_,exp,_,_,_) | Ast0.Do(_,_,_,_,exp,_,_) | Ast0.For(_,_,_,_,Some exp,_,_,_,_,_) | Ast0.Switch(_,_,exp,_,_,_,_) -> @@ -373,13 +370,15 @@ let rec propagate_types env = | Ast0.OptCase(case) -> k c in V0.combiner bind option_default - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing statement_dots donothing donothing - ident expression donothing donothing donothing donothing statement - case_line donothing + {V0.combiner_functions with + VT0.combiner_dotsstmtfn = statement_dots; + VT0.combiner_identfn = ident; + VT0.combiner_exprfn = expression; + VT0.combiner_stmtfn = statement; + VT0.combiner_casefn = case_line} let type_infer code = let prop = propagate_types [(Id("NULL"),T.Pointer(T.Unknown))] in - let fn = prop.V0.combiner_top_level in + let fn = prop.VT0.combiner_rec_top_level in let _ = List.map fn code in () diff --git a/parsing_cocci/unitary_ast0.ml b/parsing_cocci/unitary_ast0.ml index a58ffef..4002eb9 100644 --- a/parsing_cocci/unitary_ast0.ml +++ b/parsing_cocci/unitary_ast0.ml @@ -24,6 +24,7 @@ module Ast0 = Ast0_cocci module Ast = Ast_cocci module V0 = Visitor_ast0 +module VT0 = Visitor_ast0_types let set_minus s minus = List.filter (function n -> not (List.mem n minus)) s @@ -45,8 +46,6 @@ let plus_checker (nm,_,_,mc,_) = let get_free checker t = let bind x y = x @ y in let option_default = [] in - let donothing r k e = k e in - let mcode _ = option_default in (* considers a single list *) let collect_unitary_nonunitary free_usage = @@ -95,14 +94,14 @@ let get_free checker t = Ast0.MetaErr(name,_,_) | Ast0.MetaExpr(name,_,_,_,_) | Ast0.MetaExprList(name,_,_) -> checker name | Ast0.DisjExpr(starter,expr_list,mids,ender) -> - detect_unitary_frees(List.map r.V0.combiner_expression expr_list) + detect_unitary_frees(List.map r.VT0.combiner_rec_expression expr_list) | _ -> k e in let typeC r k t = match Ast0.unwrap t with Ast0.MetaType(name,_) -> checker name | Ast0.DisjType(starter,types,mids,ender) -> - detect_unitary_frees(List.map r.V0.combiner_typeC types) + detect_unitary_frees(List.map r.VT0.combiner_rec_typeC types) | _ -> k t in let parameter r k p = @@ -113,45 +112,49 @@ let get_free checker t = let declaration r k d = match Ast0.unwrap d with Ast0.DisjDecl(starter,decls,mids,ender) -> - detect_unitary_frees(List.map r.V0.combiner_declaration decls) + detect_unitary_frees(List.map r.VT0.combiner_rec_declaration decls) | _ -> k d in let statement r k s = match Ast0.unwrap s with Ast0.MetaStmt(name,_) | Ast0.MetaStmtList(name,_) -> checker name | Ast0.Disj(starter,stmt_list,mids,ender) -> - detect_unitary_frees(List.map r.V0.combiner_statement_dots stmt_list) + detect_unitary_frees + (List.map r.VT0.combiner_rec_statement_dots stmt_list) | Ast0.Nest(starter,stmt_dots,ender,whn,multi) -> - bind (r.V0.combiner_statement_dots stmt_dots) + bind (r.VT0.combiner_rec_statement_dots stmt_dots) (detect_unitary_frees (List.map - (whencode r.V0.combiner_statement_dots r.V0.combiner_statement - r.V0.combiner_expression) + (whencode + r.VT0.combiner_rec_statement_dots + r.VT0.combiner_rec_statement + r.VT0.combiner_rec_expression) whn)) | Ast0.Dots(d,whn) | Ast0.Circles(d,whn) | Ast0.Stars(d,whn) -> detect_unitary_frees (List.map - (whencode r.V0.combiner_statement_dots r.V0.combiner_statement - r.V0.combiner_expression) + (whencode + r.VT0.combiner_rec_statement_dots r.VT0.combiner_rec_statement + r.VT0.combiner_rec_expression) whn) | _ -> k s in let res = V0.combiner bind option_default - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - ident expression typeC donothing parameter declaration statement - donothing donothing in + {V0.combiner_functions with + VT0.combiner_identfn = ident; + VT0.combiner_exprfn = expression; + VT0.combiner_tyfn = typeC; + VT0.combiner_paramfn = parameter; + VT0.combiner_declfn = declaration; + VT0.combiner_stmtfn = statement} in collect_unitary_nonunitary - (List.concat (List.map res.V0.combiner_top_level t)) + (List.concat (List.map res.VT0.combiner_rec_top_level t)) (* ----------------------------------------------------------------------- *) (* update the variables that are unitary *) let update_unitary unitary = - let donothing r k e = k e in - let mcode x = x in - let is_unitary name = match (List.mem (Ast0.unwrap_mcode name) unitary, !Flag.sgrep_mode2, Ast0.get_mcode_mcodekind name) with @@ -203,12 +206,14 @@ let update_unitary unitary = | _ -> k s in let res = V0.rebuilder - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - donothing donothing donothing donothing donothing donothing - ident expression typeC donothing parameter donothing statement - donothing donothing in + {V0.rebuilder_functions with + VT0.rebuilder_identfn = ident; + VT0.rebuilder_exprfn = expression; + VT0.rebuilder_tyfn = typeC; + VT0.rebuilder_paramfn = parameter; + VT0.rebuilder_stmtfn = statement} in - List.map res.V0.rebuilder_top_level + List.map res.VT0.rebuilder_rec_top_level (* ----------------------------------------------------------------------- *) @@ -229,7 +234,8 @@ let do_unitary rules = [] -> ([],[]) | (r::rules) -> match r with - Ast0.ScriptRule (a,b,c,d) -> + Ast0.ScriptRule (_,_,_,_) + | Ast0.InitialScriptRule (_,_) | Ast0.FinalScriptRule (_,_) -> let (x,rules) = loop rules in (x, r::rules) | Ast0.CocciRule ((minus,metavars,chosen_isos),((plus,_) as plusz),rt) -> diff --git a/parsing_cocci/visitor_ast.ml b/parsing_cocci/visitor_ast.ml index 6836dda..d01dc06 100644 --- a/parsing_cocci/visitor_ast.ml +++ b/parsing_cocci/visitor_ast.ml @@ -20,6 +20,7 @@ *) +module Ast0 = Ast0_cocci module Ast = Ast_cocci (* --------------------------------------------------------------------- *) diff --git a/parsing_cocci/visitor_ast0.ml b/parsing_cocci/visitor_ast0.ml dissimilarity index 81% index 16ae0a1..2938d41 100644 --- a/parsing_cocci/visitor_ast0.ml +++ b/parsing_cocci/visitor_ast0.ml @@ -1,1048 +1,1256 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -module Ast = Ast_cocci -module Ast0 = Ast0_cocci - -(* --------------------------------------------------------------------- *) -(* Generic traversal: combiner *) -(* parameters: - combining function - treatment of: mcode, identifiers, expressions, typeCs, types, - declarations, statements, toplevels - default value for options *) - -type 'a combiner = - {combiner_ident : Ast0.ident -> 'a; - combiner_expression : Ast0.expression -> 'a; - combiner_typeC : Ast0.typeC -> 'a; - combiner_declaration : Ast0.declaration -> 'a; - combiner_initialiser : Ast0.initialiser -> 'a; - combiner_initialiser_list : Ast0.initialiser_list -> 'a; - combiner_parameter : Ast0.parameterTypeDef -> 'a; - combiner_parameter_list : Ast0.parameter_list -> 'a; - combiner_statement : Ast0.statement -> 'a; - combiner_case_line : Ast0.case_line -> 'a; - combiner_top_level : Ast0.top_level -> 'a; - combiner_expression_dots : - Ast0.expression Ast0.dots -> 'a; - combiner_statement_dots : - Ast0.statement Ast0.dots -> 'a; - combiner_declaration_dots : - Ast0.declaration Ast0.dots -> 'a; - combiner_case_line_dots : - Ast0.case_line Ast0.dots -> 'a; - combiner_anything : Ast0.anything -> 'a} - - -type ('mc,'a) cmcode = 'mc Ast0.mcode -> 'a -type ('cd,'a) ccode = 'a combiner -> ('cd -> 'a) -> 'cd -> 'a - -let combiner bind option_default - meta_mcode string_mcode const_mcode assign_mcode fix_mcode unary_mcode - binary_mcode cv_mcode sign_mcode struct_mcode storage_mcode - inc_mcode - dotsexprfn dotsinitfn dotsparamfn dotsstmtfn dotsdeclfn dotscasefn - identfn exprfn - tyfn initfn paramfn declfn stmtfn casefn topfn = - let multibind l = - let rec loop = function - [] -> option_default - | [x] -> x - | x::xs -> bind x (loop xs) in - loop l in - let get_option f = function - Some x -> f x - | None -> option_default in - let rec expression_dots d = - let k d = - match Ast0.unwrap d with - Ast0.DOTS(l) | Ast0.CIRCLES(l) | Ast0.STARS(l) -> - multibind (List.map expression l) in - dotsexprfn all_functions k d - and initialiser_dots d = - let k d = - match Ast0.unwrap d with - Ast0.DOTS(l) | Ast0.CIRCLES(l) | Ast0.STARS(l) -> - multibind (List.map initialiser l) in - dotsinitfn all_functions k d - and parameter_dots d = - let k d = - match Ast0.unwrap d with - Ast0.DOTS(l) | Ast0.CIRCLES(l) | Ast0.STARS(l) -> - multibind (List.map parameterTypeDef l) in - dotsparamfn all_functions k d - and statement_dots d = - let k d = - match Ast0.unwrap d with - Ast0.DOTS(l) | Ast0.CIRCLES(l) | Ast0.STARS(l) -> - multibind (List.map statement l) in - dotsstmtfn all_functions k d - and declaration_dots d = - let k d = - match Ast0.unwrap d with - Ast0.DOTS(l) | Ast0.CIRCLES(l) | Ast0.STARS(l) -> - multibind (List.map declaration l) in - dotsdeclfn all_functions k d - and case_line_dots d = - let k d = - match Ast0.unwrap d with - Ast0.DOTS(l) | Ast0.CIRCLES(l) | Ast0.STARS(l) -> - multibind (List.map case_line l) in - dotscasefn all_functions k d - and ident i = - let k i = - match Ast0.unwrap i with - Ast0.Id(name) -> string_mcode name - | Ast0.MetaId(name,_,_) -> meta_mcode name - | Ast0.MetaFunc(name,_,_) -> meta_mcode name - | Ast0.MetaLocalFunc(name,_,_) -> meta_mcode name - | Ast0.OptIdent(id) -> ident id - | Ast0.UniqueIdent(id) -> ident id in - identfn all_functions k i - and expression e = - let k e = - match Ast0.unwrap e with - Ast0.Ident(id) -> ident id - | Ast0.Constant(const) -> const_mcode const - | Ast0.FunCall(fn,lp,args,rp) -> - multibind - [expression fn; string_mcode lp; expression_dots args; - string_mcode rp] - | Ast0.Assignment(left,op,right,_) -> - multibind [expression left; assign_mcode op; expression right] - | Ast0.CondExpr(exp1,why,exp2,colon,exp3) -> - multibind - [expression exp1; string_mcode why; get_option expression exp2; - string_mcode colon; expression exp3] - | Ast0.Postfix(exp,op) -> bind (expression exp) (fix_mcode op) - | Ast0.Infix(exp,op) -> bind (fix_mcode op) (expression exp) - | Ast0.Unary(exp,op) -> bind (unary_mcode op) (expression exp) - | Ast0.Binary(left,op,right) -> - multibind [expression left; binary_mcode op; expression right] - | Ast0.Nested(left,op,right) -> - multibind [expression left; binary_mcode op; expression right] - | Ast0.Paren(lp,exp,rp) -> - multibind [string_mcode lp; expression exp; string_mcode rp] - | Ast0.ArrayAccess(exp1,lb,exp2,rb) -> - multibind - [expression exp1; string_mcode lb; expression exp2; - string_mcode rb] - | Ast0.RecordAccess(exp,pt,field) -> - multibind [expression exp; string_mcode pt; ident field] - | Ast0.RecordPtAccess(exp,ar,field) -> - multibind [expression exp; string_mcode ar; ident field] - | Ast0.Cast(lp,ty,rp,exp) -> - multibind - [string_mcode lp; typeC ty; string_mcode rp; expression exp] - | Ast0.SizeOfExpr(szf,exp) -> - multibind [string_mcode szf; expression exp] - | Ast0.SizeOfType(szf,lp,ty,rp) -> - multibind - [string_mcode szf; string_mcode lp; typeC ty; string_mcode rp] - | Ast0.TypeExp(ty) -> typeC ty - | Ast0.MetaErr(name,_,_) - | Ast0.MetaExpr(name,_,_,_,_) - | Ast0.MetaExprList(name,_,_) -> meta_mcode name - | Ast0.EComma(cm) -> string_mcode cm - | Ast0.DisjExpr(starter,expr_list,mids,ender) -> - (match expr_list with - [] -> failwith "bad disjunction" - | x::xs -> - bind (string_mcode starter) - (bind (expression x) - (bind - (multibind - (List.map2 - (function mid -> - function x -> - bind (string_mcode mid) (expression x)) - mids xs)) - (string_mcode ender)))) - | Ast0.NestExpr(starter,expr_dots,ender,whencode,multi) -> - bind (string_mcode starter) - (bind (expression_dots expr_dots) - (bind (string_mcode ender) (get_option expression whencode))) - | Ast0.Edots(dots,whencode) | Ast0.Ecircles(dots,whencode) - | Ast0.Estars(dots,whencode) -> - bind (string_mcode dots) (get_option expression whencode) - | Ast0.OptExp(exp) -> expression exp - | Ast0.UniqueExp(exp) -> expression exp in - exprfn all_functions k e - and function_pointer (ty,lp1,star,rp1,lp2,params,rp2) extra = - (* have to put the treatment of the identifier into the right position *) - multibind - ([typeC ty; string_mcode lp1; string_mcode star] @ extra @ - [string_mcode rp1; - string_mcode lp2; parameter_dots params; string_mcode rp2]) - and function_type (ty,lp1,params,rp1) extra = - (* have to put the treatment of the identifier into the right position *) - multibind ([get_option typeC ty] @ extra @ - [string_mcode lp1; parameter_dots params; string_mcode rp1]) - and array_type (ty,lb,size,rb) extra = - multibind - ([typeC ty] @ extra @ - [string_mcode lb; get_option expression size; string_mcode rb]) - and typeC t = - let k t = - match Ast0.unwrap t with - Ast0.ConstVol(cv,ty) -> bind (cv_mcode cv) (typeC ty) - | Ast0.BaseType(ty,strings) -> multibind (List.map string_mcode strings) - | Ast0.Signed(sign,ty) -> bind (sign_mcode sign) (get_option typeC ty) - | Ast0.Pointer(ty,star) -> bind (typeC ty) (string_mcode star) - | Ast0.FunctionPointer(ty,lp1,star,rp1,lp2,params,rp2) -> - function_pointer (ty,lp1,star,rp1,lp2,params,rp2) [] - | Ast0.FunctionType(ty,lp1,params,rp1) -> - function_type (ty,lp1,params,rp1) [] - | Ast0.Array(ty,lb,size,rb) -> - array_type (ty,lb,size,rb) [] - | Ast0.EnumName(kind,name) -> bind (string_mcode kind) (ident name) - | Ast0.StructUnionName(kind,name) -> - bind (struct_mcode kind) (get_option ident name) - | Ast0.StructUnionDef(ty,lb,decls,rb) -> - multibind - [typeC ty;string_mcode lb;declaration_dots decls;string_mcode rb] - | Ast0.TypeName(name) -> string_mcode name - | Ast0.MetaType(name,_) -> meta_mcode name - | Ast0.DisjType(starter,types,mids,ender) -> - (match types with - [] -> failwith "bad disjunction" - | x::xs -> - bind (string_mcode starter) - (bind (typeC x) - (bind - (multibind - (List.map2 - (function mid -> - function x -> - bind (string_mcode mid) (typeC x)) - mids xs)) - (string_mcode ender)))) - | Ast0.OptType(ty) -> typeC ty - | Ast0.UniqueType(ty) -> typeC ty in - tyfn all_functions k t - and named_type ty id = - match Ast0.unwrap ty with - Ast0.FunctionPointer(ty,lp1,star,rp1,lp2,params,rp2) -> - function_pointer (ty,lp1,star,rp1,lp2,params,rp2) [ident id] - | Ast0.FunctionType(ty,lp1,params,rp1) -> - function_type (ty,lp1,params,rp1) [ident id] - | Ast0.Array(ty,lb,size,rb) -> - array_type (ty,lb,size,rb) [ident id] - | _ -> bind (typeC ty) (ident id) - and declaration d = - let k d = - match Ast0.unwrap d with - Ast0.Init(stg,ty,id,eq,ini,sem) -> - bind (get_option storage_mcode stg) - (bind (named_type ty id) - (multibind - [string_mcode eq; initialiser ini; string_mcode sem])) - | Ast0.UnInit(stg,ty,id,sem) -> - bind (get_option storage_mcode stg) - (bind (named_type ty id) (string_mcode sem)) - | Ast0.MacroDecl(name,lp,args,rp,sem) -> - multibind - [ident name; string_mcode lp; expression_dots args; - string_mcode rp; string_mcode sem] - | Ast0.TyDecl(ty,sem) -> bind (typeC ty) (string_mcode sem) - | Ast0.Typedef(stg,ty,id,sem) -> - bind (string_mcode stg) - (bind (typeC ty) (bind (typeC id) (string_mcode sem))) - | Ast0.DisjDecl(starter,decls,mids,ender) -> - (match decls with - [] -> failwith "bad disjunction" - | x::xs -> - bind (string_mcode starter) - (bind (declaration x) - (bind - (multibind - (List.map2 - (function mid -> - function x -> - bind (string_mcode mid) (declaration x)) - mids xs)) - (string_mcode ender)))) - | Ast0.Ddots(dots,whencode) -> - bind (string_mcode dots) (get_option declaration whencode) - | Ast0.OptDecl(decl) -> declaration decl - | Ast0.UniqueDecl(decl) -> declaration decl in - declfn all_functions k d - and initialiser i = - let k i = - match Ast0.unwrap i with - Ast0.MetaInit(name,_) -> meta_mcode name - | Ast0.InitExpr(exp) -> expression exp - | Ast0.InitList(lb,initlist,rb) -> - multibind - [string_mcode lb; initialiser_dots initlist; string_mcode rb] - | Ast0.InitGccExt(designators,eq,ini) -> - multibind - ((List.map designator designators) @ - [string_mcode eq; initialiser ini]) - | Ast0.InitGccName(name,eq,ini) -> - multibind [ident name; string_mcode eq; initialiser ini] - | Ast0.IComma(cm) -> string_mcode cm - | Ast0.Idots(dots,whencode) -> - bind (string_mcode dots) (get_option initialiser whencode) - | Ast0.OptIni(i) -> initialiser i - | Ast0.UniqueIni(i) -> initialiser i in - initfn all_functions k i - - and designator = function - Ast0.DesignatorField(dot,id) -> bind (string_mcode dot) (ident id) - | Ast0.DesignatorIndex(lb,exp,rb) -> - bind (string_mcode lb) (bind (expression exp) (string_mcode rb)) - | Ast0.DesignatorRange(lb,min,dots,max,rb) -> - multibind - [string_mcode lb; expression min; string_mcode dots; - expression max; string_mcode rb] - - and parameterTypeDef p = - let k p = - match Ast0.unwrap p with - Ast0.VoidParam(ty) -> typeC ty - | Ast0.Param(ty,Some id) -> named_type ty id - | Ast0.Param(ty,None) -> typeC ty - | Ast0.MetaParam(name,_) -> meta_mcode name - | Ast0.MetaParamList(name,_,_) -> meta_mcode name - | Ast0.PComma(cm) -> string_mcode cm - | Ast0.Pdots(dots) -> string_mcode dots - | Ast0.Pcircles(dots) -> string_mcode dots - | Ast0.OptParam(param) -> parameterTypeDef param - | Ast0.UniqueParam(param) -> parameterTypeDef param in - paramfn all_functions k p - - (* discard the result, because the statement is assumed to be already - represented elsewhere in the code *) - and process_bef_aft s = - match Ast0.get_dots_bef_aft s with - Ast0.NoDots -> () - | Ast0.DroppingBetweenDots(stm) -> let _ = statement stm in () - | Ast0.AddingBetweenDots(stm) -> let _ = statement stm in () - - and statement s = - process_bef_aft s; - let k s = - match Ast0.unwrap s with - Ast0.FunDecl(_,fi,name,lp,params,rp,lbrace,body,rbrace) -> - multibind - ((List.map fninfo fi) @ - [ident name; string_mcode lp; - parameter_dots params; string_mcode rp; string_mcode lbrace; - statement_dots body; string_mcode rbrace]) - | Ast0.Decl(_,decl) -> declaration decl - | Ast0.Seq(lbrace,body,rbrace) -> - multibind - [string_mcode lbrace; statement_dots body; string_mcode rbrace] - | Ast0.ExprStatement(exp,sem) -> - bind (expression exp) (string_mcode sem) - | Ast0.IfThen(iff,lp,exp,rp,branch1,_) -> - multibind - [string_mcode iff; string_mcode lp; expression exp; - string_mcode rp; statement branch1] - | Ast0.IfThenElse(iff,lp,exp,rp,branch1,els,branch2,_) -> - multibind - [string_mcode iff; string_mcode lp; expression exp; - string_mcode rp; statement branch1; string_mcode els; - statement branch2] - | Ast0.While(whl,lp,exp,rp,body,_) -> - multibind - [string_mcode whl; string_mcode lp; expression exp; - string_mcode rp; statement body] - | Ast0.Do(d,body,whl,lp,exp,rp,sem) -> - multibind - [string_mcode d; statement body; string_mcode whl; - string_mcode lp; expression exp; string_mcode rp; - string_mcode sem] - | Ast0.For(fr,lp,e1,sem1,e2,sem2,e3,rp,body,_) -> - multibind - [string_mcode fr; string_mcode lp; get_option expression e1; - string_mcode sem1; get_option expression e2; string_mcode sem2; - get_option expression e3; - string_mcode rp; statement body] - | Ast0.Iterator(nm,lp,args,rp,body,_) -> - multibind - [ident nm; string_mcode lp; expression_dots args; - string_mcode rp; statement body] - | Ast0.Switch(switch,lp,exp,rp,lb,cases,rb) -> - multibind - [string_mcode switch; string_mcode lp; expression exp; - string_mcode rp; string_mcode lb; case_line_dots cases; - string_mcode rb] - | Ast0.Break(br,sem) -> bind (string_mcode br) (string_mcode sem) - | Ast0.Continue(cont,sem) -> bind (string_mcode cont) (string_mcode sem) - | Ast0.Label(l,dd) -> bind (ident l) (string_mcode dd) - | Ast0.Goto(goto,l,sem) -> - bind (string_mcode goto) (bind (ident l) (string_mcode sem)) - | Ast0.Return(ret,sem) -> bind (string_mcode ret) (string_mcode sem) - | Ast0.ReturnExpr(ret,exp,sem) -> - multibind [string_mcode ret; expression exp; string_mcode sem] - | Ast0.MetaStmt(name,_) -> meta_mcode name - | Ast0.MetaStmtList(name,_) -> meta_mcode name - | Ast0.Disj(starter,statement_dots_list,mids,ender) -> - (match statement_dots_list with - [] -> failwith "bad disjunction" - | x::xs -> - bind (string_mcode starter) - (bind (statement_dots x) - (bind - (multibind - (List.map2 - (function mid -> - function x -> - bind (string_mcode mid) (statement_dots x)) - mids xs)) - (string_mcode ender)))) - | Ast0.Nest(starter,stmt_dots,ender,whn,multi) -> - bind (string_mcode starter) - (bind (statement_dots stmt_dots) - (bind (string_mcode ender) - (multibind - (List.map (whencode statement_dots statement) whn)))) - | Ast0.Exp(exp) -> expression exp - | Ast0.TopExp(exp) -> expression exp - | Ast0.Ty(ty) -> typeC ty - | Ast0.TopInit(init) -> initialiser init - | Ast0.Dots(d,whn) | Ast0.Circles(d,whn) | Ast0.Stars(d,whn) -> - bind (string_mcode d) - (multibind (List.map (whencode statement_dots statement) whn)) - | Ast0.Include(inc,name) -> bind (string_mcode inc) (inc_mcode name) - | Ast0.Define(def,id,params,body) -> - multibind [string_mcode def; ident id; define_parameters params; - statement_dots body] - | Ast0.OptStm(re) -> statement re - | Ast0.UniqueStm(re) -> statement re in - stmtfn all_functions k s - - (* not parameterizable for now... *) - and define_parameters p = - let k p = - match Ast0.unwrap p with - Ast0.NoParams -> option_default - | Ast0.DParams(lp,params,rp) -> - multibind - [string_mcode lp; define_param_dots params; string_mcode rp] in - k p - - and define_param_dots d = - let k d = - match Ast0.unwrap d with - Ast0.DOTS(l) | Ast0.CIRCLES(l) | Ast0.STARS(l) -> - multibind (List.map define_param l) in - k d - - and define_param p = - let k p = - match Ast0.unwrap p with - Ast0.DParam(id) -> ident id - | Ast0.DPComma(comma) -> string_mcode comma - | Ast0.DPdots(d) -> string_mcode d - | Ast0.DPcircles(c) -> string_mcode c - | Ast0.OptDParam(dp) -> define_param dp - | Ast0.UniqueDParam(dp) -> define_param dp in - k p - - and fninfo = function - Ast0.FStorage(stg) -> storage_mcode stg - | Ast0.FType(ty) -> typeC ty - | Ast0.FInline(inline) -> string_mcode inline - | Ast0.FAttr(init) -> string_mcode init - - and whencode notfn alwaysfn = function - Ast0.WhenNot a -> notfn a - | Ast0.WhenAlways a -> alwaysfn a - | Ast0.WhenModifier(_) -> option_default - | Ast0.WhenNotTrue(e) -> expression e - | Ast0.WhenNotFalse(e) -> expression e - - and case_line c = - let k c = - match Ast0.unwrap c with - Ast0.Default(def,colon,code) -> - multibind [string_mcode def;string_mcode colon;statement_dots code] - | Ast0.Case(case,exp,colon,code) -> - multibind [string_mcode case;expression exp;string_mcode colon; - statement_dots code] - | Ast0.OptCase(case) -> case_line case in - casefn all_functions k c - - and anything a = (* for compile_iso, not parameterisable *) - let k = function - Ast0.DotsExprTag(exprs) -> expression_dots exprs - | Ast0.DotsInitTag(inits) -> initialiser_dots inits - | Ast0.DotsParamTag(params) -> parameter_dots params - | Ast0.DotsStmtTag(stmts) -> statement_dots stmts - | Ast0.DotsDeclTag(decls) -> declaration_dots decls - | Ast0.DotsCaseTag(cases) -> case_line_dots cases - | Ast0.IdentTag(id) -> ident id - | Ast0.ExprTag(exp) -> expression exp - | Ast0.ArgExprTag(exp) -> expression exp - | Ast0.TestExprTag(exp) -> expression exp - | Ast0.TypeCTag(ty) -> typeC ty - | Ast0.ParamTag(param) -> parameterTypeDef param - | Ast0.InitTag(init) -> initialiser init - | Ast0.DeclTag(decl) -> declaration decl - | Ast0.StmtTag(stmt) -> statement stmt - | Ast0.CaseLineTag(c) -> case_line c - | Ast0.TopTag(top) -> top_level top - | Ast0.IsoWhenTag(_) -> option_default - | Ast0.IsoWhenTTag(e) -> expression e - | Ast0.IsoWhenFTag(e) -> expression e - | Ast0.MetaPosTag(var) -> failwith "not supported" in - k a - - and top_level t = - let k t = - match Ast0.unwrap t with - Ast0.FILEINFO(old_file,new_file) -> - bind (string_mcode old_file) (string_mcode new_file) - | Ast0.DECL(stmt_dots) -> statement stmt_dots - | Ast0.CODE(stmt_dots) -> statement_dots stmt_dots - | Ast0.ERRORWORDS(exps) -> multibind (List.map expression exps) - | Ast0.OTHER(_) -> failwith "unexpected code" in - topfn all_functions k t - and all_functions = - {combiner_ident = ident; - combiner_expression = expression; - combiner_typeC = typeC; - combiner_declaration = declaration; - combiner_initialiser = initialiser; - combiner_initialiser_list = initialiser_dots; - combiner_parameter = parameterTypeDef; - combiner_parameter_list = parameter_dots; - combiner_statement = statement; - combiner_case_line = case_line; - combiner_top_level = top_level; - combiner_expression_dots = expression_dots; - combiner_statement_dots = statement_dots; - combiner_declaration_dots = declaration_dots; - combiner_case_line_dots = case_line_dots; - combiner_anything = anything} in - all_functions - -(* --------------------------------------------------------------------- *) -(* Generic traversal: rebuilder *) - -type 'a inout = 'a -> 'a (* for specifying the type of rebuilder *) - -type rebuilder = - {rebuilder_ident : Ast0.ident inout; - rebuilder_expression : Ast0.expression inout; - rebuilder_typeC : Ast0.typeC inout; - rebuilder_declaration : Ast0.declaration inout; - rebuilder_initialiser : Ast0.initialiser inout; - rebuilder_initialiser_list : Ast0.initialiser_list inout; - rebuilder_parameter : Ast0.parameterTypeDef inout; - rebuilder_parameter_list : Ast0.parameter_list inout; - rebuilder_statement : Ast0.statement inout; - rebuilder_case_line : Ast0.case_line inout; - rebuilder_top_level : Ast0.top_level inout; - rebuilder_expression_dots : - Ast0.expression Ast0.dots -> - Ast0.expression Ast0.dots; - rebuilder_statement_dots : - Ast0.statement Ast0.dots -> - Ast0.statement Ast0.dots; - rebuilder_declaration_dots : - Ast0.declaration Ast0.dots -> - Ast0.declaration Ast0.dots; - rebuilder_case_line_dots : - Ast0.case_line Ast0.dots -> - Ast0.case_line Ast0.dots; - rebuilder_anything : - Ast0.anything -> Ast0.anything} - -type 'mc rmcode = 'mc Ast0.mcode inout -type 'cd rcode = rebuilder -> ('cd inout) -> 'cd inout - -let rebuilder = fun - meta_mcode string_mcode const_mcode assign_mcode fix_mcode unary_mcode - binary_mcode cv_mcode sign_mcode struct_mcode storage_mcode - inc_mcode - dotsexprfn dotsinitfn dotsparamfn dotsstmtfn dotsdeclfn dotscasefn - identfn exprfn tyfn initfn paramfn declfn stmtfn casefn topfn -> - let get_option f = function - Some x -> Some (f x) - | None -> None in - let rec expression_dots d = - let k d = - Ast0.rewrap d - (match Ast0.unwrap d with - Ast0.DOTS(l) -> Ast0.DOTS(List.map expression l) - | Ast0.CIRCLES(l) -> Ast0.CIRCLES(List.map expression l) - | Ast0.STARS(l) -> Ast0.STARS(List.map expression l)) in - dotsexprfn all_functions k d - and initialiser_list i = - let k i = - Ast0.rewrap i - (match Ast0.unwrap i with - Ast0.DOTS(l) -> Ast0.DOTS(List.map initialiser l) - | Ast0.CIRCLES(l) -> Ast0.CIRCLES(List.map initialiser l) - | Ast0.STARS(l) -> Ast0.STARS(List.map initialiser l)) in - dotsinitfn all_functions k i - and parameter_list d = - let k d = - Ast0.rewrap d - (match Ast0.unwrap d with - Ast0.DOTS(l) -> Ast0.DOTS(List.map parameterTypeDef l) - | Ast0.CIRCLES(l) -> Ast0.CIRCLES(List.map parameterTypeDef l) - | Ast0.STARS(l) -> Ast0.STARS(List.map parameterTypeDef l)) in - dotsparamfn all_functions k d - and statement_dots d = - let k d = - Ast0.rewrap d - (match Ast0.unwrap d with - Ast0.DOTS(l) -> Ast0.DOTS(List.map statement l) - | Ast0.CIRCLES(l) -> Ast0.CIRCLES(List.map statement l) - | Ast0.STARS(l) -> Ast0.STARS(List.map statement l)) in - dotsstmtfn all_functions k d - and declaration_dots d = - let k d = - Ast0.rewrap d - (match Ast0.unwrap d with - Ast0.DOTS(l) -> Ast0.DOTS(List.map declaration l) - | Ast0.CIRCLES(l) -> Ast0.CIRCLES(List.map declaration l) - | Ast0.STARS(l) -> Ast0.STARS(List.map declaration l)) in - dotsdeclfn all_functions k d - and case_line_dots d = - let k d = - Ast0.rewrap d - (match Ast0.unwrap d with - Ast0.DOTS(l) -> Ast0.DOTS(List.map case_line l) - | Ast0.CIRCLES(l) -> Ast0.CIRCLES(List.map case_line l) - | Ast0.STARS(l) -> Ast0.STARS(List.map case_line l)) in - dotscasefn all_functions k d - and ident i = - let k i = - Ast0.rewrap i - (match Ast0.unwrap i with - Ast0.Id(name) -> Ast0.Id(string_mcode name) - | Ast0.MetaId(name,constraints,pure) -> - Ast0.MetaId(meta_mcode name,constraints,pure) - | Ast0.MetaFunc(name,constraints,pure) -> - Ast0.MetaFunc(meta_mcode name,constraints,pure) - | Ast0.MetaLocalFunc(name,constraints,pure) -> - Ast0.MetaLocalFunc(meta_mcode name,constraints,pure) - | Ast0.OptIdent(id) -> Ast0.OptIdent(ident id) - | Ast0.UniqueIdent(id) -> Ast0.UniqueIdent(ident id)) in - identfn all_functions k i - and expression e = - let k e = - Ast0.rewrap e - (match Ast0.unwrap e with - Ast0.Ident(id) -> Ast0.Ident(ident id) - | Ast0.Constant(const) -> Ast0.Constant(const_mcode const) - | Ast0.FunCall(fn,lp,args,rp) -> - Ast0.FunCall(expression fn,string_mcode lp,expression_dots args, - string_mcode rp) - | Ast0.Assignment(left,op,right,simple) -> - Ast0.Assignment(expression left,assign_mcode op,expression right, - simple) - | Ast0.CondExpr(exp1,why,exp2,colon,exp3) -> - Ast0.CondExpr(expression exp1, string_mcode why, - get_option expression exp2, string_mcode colon, - expression exp3) - | Ast0.Postfix(exp,op) -> Ast0.Postfix(expression exp, fix_mcode op) - | Ast0.Infix(exp,op) -> Ast0.Infix(expression exp, fix_mcode op) - | Ast0.Unary(exp,op) -> Ast0.Unary(expression exp, unary_mcode op) - | Ast0.Binary(left,op,right) -> - Ast0.Binary(expression left, binary_mcode op, expression right) - | Ast0.Nested(left,op,right) -> - Ast0.Nested(expression left, binary_mcode op, expression right) - | Ast0.Paren(lp,exp,rp) -> - Ast0.Paren(string_mcode lp, expression exp, string_mcode rp) - | Ast0.ArrayAccess(exp1,lb,exp2,rb) -> - Ast0.ArrayAccess(expression exp1,string_mcode lb,expression exp2, - string_mcode rb) - | Ast0.RecordAccess(exp,pt,field) -> - Ast0.RecordAccess(expression exp, string_mcode pt, ident field) - | Ast0.RecordPtAccess(exp,ar,field) -> - Ast0.RecordPtAccess(expression exp, string_mcode ar, ident field) - | Ast0.Cast(lp,ty,rp,exp) -> - Ast0.Cast(string_mcode lp, typeC ty, string_mcode rp, - expression exp) - | Ast0.SizeOfExpr(szf,exp) -> - Ast0.SizeOfExpr(string_mcode szf, expression exp) - | Ast0.SizeOfType(szf,lp,ty,rp) -> - Ast0.SizeOfType(string_mcode szf,string_mcode lp, typeC ty, - string_mcode rp) - | Ast0.TypeExp(ty) -> Ast0.TypeExp(typeC ty) - | Ast0.MetaErr(name,constraints,pure) -> - Ast0.MetaErr(meta_mcode name,constraints,pure) - | Ast0.MetaExpr(name,constraints,ty,form,pure) -> - Ast0.MetaExpr(meta_mcode name,constraints,ty,form,pure) - | Ast0.MetaExprList(name,lenname,pure) -> - Ast0.MetaExprList(meta_mcode name,lenname,pure) - | Ast0.EComma(cm) -> Ast0.EComma(string_mcode cm) - | Ast0.DisjExpr(starter,expr_list,mids,ender) -> - Ast0.DisjExpr(string_mcode starter,List.map expression expr_list, - List.map string_mcode mids,string_mcode ender) - | Ast0.NestExpr(starter,expr_dots,ender,whencode,multi) -> - Ast0.NestExpr(string_mcode starter,expression_dots expr_dots, - string_mcode ender, get_option expression whencode, - multi) - | Ast0.Edots(dots,whencode) -> - Ast0.Edots(string_mcode dots, get_option expression whencode) - | Ast0.Ecircles(dots,whencode) -> - Ast0.Ecircles(string_mcode dots, get_option expression whencode) - | Ast0.Estars(dots,whencode) -> - Ast0.Estars(string_mcode dots, get_option expression whencode) - | Ast0.OptExp(exp) -> Ast0.OptExp(expression exp) - | Ast0.UniqueExp(exp) -> Ast0.UniqueExp(expression exp)) in - exprfn all_functions k e - and typeC t = - let k t = - Ast0.rewrap t - (match Ast0.unwrap t with - Ast0.ConstVol(cv,ty) -> Ast0.ConstVol(cv_mcode cv,typeC ty) - | Ast0.BaseType(ty,strings) -> - Ast0.BaseType(ty, List.map string_mcode strings) - | Ast0.Signed(sign,ty) -> - Ast0.Signed(sign_mcode sign,get_option typeC ty) - | Ast0.Pointer(ty,star) -> - Ast0.Pointer(typeC ty, string_mcode star) - | Ast0.FunctionPointer(ty,lp1,star,rp1,lp2,params,rp2) -> - Ast0.FunctionPointer(typeC ty,string_mcode lp1,string_mcode star, - string_mcode rp1,string_mcode lp2, - parameter_list params, - string_mcode rp2) - | Ast0.FunctionType(ty,lp1,params,rp1) -> - Ast0.FunctionType(get_option typeC ty, - string_mcode lp1,parameter_list params, - string_mcode rp1) - | Ast0.Array(ty,lb,size,rb) -> - Ast0.Array(typeC ty, string_mcode lb, - get_option expression size, string_mcode rb) - | Ast0.EnumName(kind,name) -> - Ast0.EnumName(string_mcode kind, ident name) - | Ast0.StructUnionName(kind,name) -> - Ast0.StructUnionName (struct_mcode kind, get_option ident name) - | Ast0.StructUnionDef(ty,lb,decls,rb) -> - Ast0.StructUnionDef (typeC ty, - string_mcode lb, declaration_dots decls, - string_mcode rb) - | Ast0.TypeName(name) -> Ast0.TypeName(string_mcode name) - | Ast0.MetaType(name,pure) -> - Ast0.MetaType(meta_mcode name,pure) - | Ast0.DisjType(starter,types,mids,ender) -> - Ast0.DisjType(string_mcode starter,List.map typeC types, - List.map string_mcode mids,string_mcode ender) - | Ast0.OptType(ty) -> Ast0.OptType(typeC ty) - | Ast0.UniqueType(ty) -> Ast0.UniqueType(typeC ty)) in - tyfn all_functions k t - and declaration d = - let k d = - Ast0.rewrap d - (match Ast0.unwrap d with - Ast0.Init(stg,ty,id,eq,ini,sem) -> - Ast0.Init(get_option storage_mcode stg, - typeC ty, ident id, string_mcode eq, initialiser ini, - string_mcode sem) - | Ast0.UnInit(stg,ty,id,sem) -> - Ast0.UnInit(get_option storage_mcode stg, - typeC ty, ident id, string_mcode sem) - | Ast0.MacroDecl(name,lp,args,rp,sem) -> - Ast0.MacroDecl(ident name,string_mcode lp, - expression_dots args, - string_mcode rp,string_mcode sem) - | Ast0.TyDecl(ty,sem) -> Ast0.TyDecl(typeC ty, string_mcode sem) - | Ast0.Typedef(stg,ty,id,sem) -> - Ast0.Typedef(string_mcode stg, typeC ty, typeC id, - string_mcode sem) - | Ast0.DisjDecl(starter,decls,mids,ender) -> - Ast0.DisjDecl(string_mcode starter,List.map declaration decls, - List.map string_mcode mids,string_mcode ender) - | Ast0.Ddots(dots,whencode) -> - Ast0.Ddots(string_mcode dots, get_option declaration whencode) - | Ast0.OptDecl(decl) -> Ast0.OptDecl(declaration decl) - | Ast0.UniqueDecl(decl) -> Ast0.UniqueDecl(declaration decl)) in - declfn all_functions k d - and initialiser i = - let k i = - Ast0.rewrap i - (match Ast0.unwrap i with - Ast0.MetaInit(name,pure) -> - Ast0.MetaInit(meta_mcode name,pure) - | Ast0.InitExpr(exp) -> Ast0.InitExpr(expression exp) - | Ast0.InitList(lb,initlist,rb) -> - Ast0.InitList(string_mcode lb, initialiser_list initlist, - string_mcode rb) - | Ast0.InitGccExt(designators,eq,ini) -> - Ast0.InitGccExt - (List.map designator designators, string_mcode eq, - initialiser ini) - | Ast0.InitGccName(name,eq,ini) -> - Ast0.InitGccName(ident name, string_mcode eq, initialiser ini) - | Ast0.IComma(cm) -> Ast0.IComma(string_mcode cm) - | Ast0.Idots(d,whencode) -> - Ast0.Idots(string_mcode d, get_option initialiser whencode) - | Ast0.OptIni(i) -> Ast0.OptIni(initialiser i) - | Ast0.UniqueIni(i) -> Ast0.UniqueIni(initialiser i)) in - initfn all_functions k i - - and designator = function - Ast0.DesignatorField(dot,id) -> - Ast0.DesignatorField(string_mcode dot,ident id) - | Ast0.DesignatorIndex(lb,exp,rb) -> - Ast0.DesignatorIndex(string_mcode lb,expression exp,string_mcode rb) - | Ast0.DesignatorRange(lb,min,dots,max,rb) -> - Ast0.DesignatorRange(string_mcode lb,expression min,string_mcode dots, - expression max,string_mcode rb) - - and parameterTypeDef p = - let k p = - Ast0.rewrap p - (match Ast0.unwrap p with - Ast0.VoidParam(ty) -> Ast0.VoidParam(typeC ty) - | Ast0.Param(ty,id) -> Ast0.Param(typeC ty, get_option ident id) - | Ast0.MetaParam(name,pure) -> - Ast0.MetaParam(meta_mcode name,pure) - | Ast0.MetaParamList(name,lenname,pure) -> - Ast0.MetaParamList(meta_mcode name,lenname,pure) - | Ast0.PComma(cm) -> Ast0.PComma(string_mcode cm) - | Ast0.Pdots(dots) -> Ast0.Pdots(string_mcode dots) - | Ast0.Pcircles(dots) -> Ast0.Pcircles(string_mcode dots) - | Ast0.OptParam(param) -> Ast0.OptParam(parameterTypeDef param) - | Ast0.UniqueParam(param) -> - Ast0.UniqueParam(parameterTypeDef param)) in - paramfn all_functions k p - (* not done for combiner, because the statement is assumed to be already - represented elsewhere in the code *) - and process_bef_aft s = - Ast0.set_dots_bef_aft s - (match Ast0.get_dots_bef_aft s with - Ast0.NoDots -> Ast0.NoDots - | Ast0.DroppingBetweenDots(stm) -> - Ast0.DroppingBetweenDots(statement stm) - | Ast0.AddingBetweenDots(stm) -> - Ast0.AddingBetweenDots(statement stm)) - - and statement s = - let k s = - Ast0.rewrap s - (match Ast0.unwrap s with - Ast0.FunDecl(bef,fi,name,lp,params,rp,lbrace,body,rbrace) -> - Ast0.FunDecl(bef,List.map fninfo fi, ident name, - string_mcode lp, parameter_list params, - string_mcode rp, string_mcode lbrace, - statement_dots body, string_mcode rbrace) - | Ast0.Decl(bef,decl) -> Ast0.Decl(bef,declaration decl) - | Ast0.Seq(lbrace,body,rbrace) -> - Ast0.Seq(string_mcode lbrace, statement_dots body, - string_mcode rbrace) - | Ast0.ExprStatement(exp,sem) -> - Ast0.ExprStatement(expression exp, string_mcode sem) - | Ast0.IfThen(iff,lp,exp,rp,branch1,aft) -> - Ast0.IfThen(string_mcode iff, string_mcode lp, expression exp, - string_mcode rp, statement branch1,aft) - | Ast0.IfThenElse(iff,lp,exp,rp,branch1,els,branch2,aft) -> - Ast0.IfThenElse(string_mcode iff,string_mcode lp,expression exp, - string_mcode rp, statement branch1, string_mcode els, - statement branch2,aft) - | Ast0.While(whl,lp,exp,rp,body,aft) -> - Ast0.While(string_mcode whl, string_mcode lp, expression exp, - string_mcode rp, statement body, aft) - | Ast0.Do(d,body,whl,lp,exp,rp,sem) -> - Ast0.Do(string_mcode d, statement body, string_mcode whl, - string_mcode lp, expression exp, string_mcode rp, - string_mcode sem) - | Ast0.For(fr,lp,e1,sem1,e2,sem2,e3,rp,body,aft) -> - Ast0.For(string_mcode fr, string_mcode lp, - get_option expression e1, string_mcode sem1, - get_option expression e2, string_mcode sem2, - get_option expression e3, - string_mcode rp, statement body, aft) - | Ast0.Iterator(nm,lp,args,rp,body,aft) -> - Ast0.Iterator(ident nm, string_mcode lp, - expression_dots args, - string_mcode rp, statement body, aft) - | Ast0.Switch(switch,lp,exp,rp,lb,cases,rb) -> - Ast0.Switch(string_mcode switch,string_mcode lp,expression exp, - string_mcode rp,string_mcode lb, - case_line_dots cases, string_mcode rb) - | Ast0.Break(br,sem) -> - Ast0.Break(string_mcode br,string_mcode sem) - | Ast0.Continue(cont,sem) -> - Ast0.Continue(string_mcode cont,string_mcode sem) - | Ast0.Label(l,dd) -> Ast0.Label(ident l,string_mcode dd) - | Ast0.Goto(goto,l,sem) -> - Ast0.Goto(string_mcode goto,ident l,string_mcode sem) - | Ast0.Return(ret,sem) -> - Ast0.Return(string_mcode ret,string_mcode sem) - | Ast0.ReturnExpr(ret,exp,sem) -> - Ast0.ReturnExpr(string_mcode ret,expression exp,string_mcode sem) - | Ast0.MetaStmt(name,pure) -> - Ast0.MetaStmt(meta_mcode name,pure) - | Ast0.MetaStmtList(name,pure) -> - Ast0.MetaStmtList(meta_mcode name,pure) - | Ast0.Disj(starter,statement_dots_list,mids,ender) -> - Ast0.Disj(string_mcode starter, - List.map statement_dots statement_dots_list, - List.map string_mcode mids, - string_mcode ender) - | Ast0.Nest(starter,stmt_dots,ender,whn,multi) -> - Ast0.Nest(string_mcode starter,statement_dots stmt_dots, - string_mcode ender, - List.map (whencode statement_dots statement) whn, - multi) - | Ast0.Exp(exp) -> Ast0.Exp(expression exp) - | Ast0.TopExp(exp) -> Ast0.TopExp(expression exp) - | Ast0.Ty(ty) -> Ast0.Ty(typeC ty) - | Ast0.TopInit(init) -> Ast0.TopInit(initialiser init) - | Ast0.Dots(d,whn) -> - Ast0.Dots(string_mcode d, - List.map (whencode statement_dots statement) whn) - | Ast0.Circles(d,whn) -> - Ast0.Circles(string_mcode d, - List.map (whencode statement_dots statement) whn) - | Ast0.Stars(d,whn) -> - Ast0.Stars(string_mcode d, - List.map (whencode statement_dots statement) whn) - | Ast0.Include(inc,name) -> - Ast0.Include(string_mcode inc,inc_mcode name) - | Ast0.Define(def,id,params,body) -> - Ast0.Define(string_mcode def,ident id, - define_parameters params, - statement_dots body) - | Ast0.OptStm(re) -> Ast0.OptStm(statement re) - | Ast0.UniqueStm(re) -> Ast0.UniqueStm(statement re)) in - let s = stmtfn all_functions k s in - process_bef_aft s - - (* not parameterizable for now... *) - and define_parameters p = - let k p = - Ast0.rewrap p - (match Ast0.unwrap p with - Ast0.NoParams -> Ast0.NoParams - | Ast0.DParams(lp,params,rp) -> - Ast0.DParams(string_mcode lp,define_param_dots params, - string_mcode rp))in - k p - - and define_param_dots d = - let k d = - Ast0.rewrap d - (match Ast0.unwrap d with - Ast0.DOTS(l) -> Ast0.DOTS(List.map define_param l) - | Ast0.CIRCLES(l) -> Ast0.CIRCLES(List.map define_param l) - | Ast0.STARS(l) -> Ast0.STARS(List.map define_param l)) in - k d - - and define_param p = - let k p = - Ast0.rewrap p - (match Ast0.unwrap p with - Ast0.DParam(id) -> Ast0.DParam(ident id) - | Ast0.DPComma(comma) -> Ast0.DPComma(string_mcode comma) - | Ast0.DPdots(d) -> Ast0.DPdots(string_mcode d) - | Ast0.DPcircles(c) -> Ast0.DPcircles(string_mcode c) - | Ast0.OptDParam(dp) -> Ast0.OptDParam(define_param dp) - | Ast0.UniqueDParam(dp) -> Ast0.UniqueDParam(define_param dp)) in - k p - - and fninfo = function - Ast0.FStorage(stg) -> Ast0.FStorage(storage_mcode stg) - | Ast0.FType(ty) -> Ast0.FType(typeC ty) - | Ast0.FInline(inline) -> Ast0.FInline(string_mcode inline) - | Ast0.FAttr(init) -> Ast0.FAttr(string_mcode init) - - and whencode notfn alwaysfn = function - Ast0.WhenNot a -> Ast0.WhenNot (notfn a) - | Ast0.WhenAlways a -> Ast0.WhenAlways (alwaysfn a) - | Ast0.WhenModifier(x) -> Ast0.WhenModifier(x) - | Ast0.WhenNotTrue(e) -> Ast0.WhenNotTrue(expression e) - | Ast0.WhenNotFalse(e) -> Ast0.WhenNotFalse(expression e) - - and case_line c = - let k c = - Ast0.rewrap c - (match Ast0.unwrap c with - Ast0.Default(def,colon,code) -> - Ast0.Default(string_mcode def,string_mcode colon, - statement_dots code) - | Ast0.Case(case,exp,colon,code) -> - Ast0.Case(string_mcode case,expression exp,string_mcode colon, - statement_dots code) - | Ast0.OptCase(case) -> Ast0.OptCase(case_line case)) in - casefn all_functions k c - - and top_level t = - let k t = - Ast0.rewrap t - (match Ast0.unwrap t with - Ast0.FILEINFO(old_file,new_file) -> - Ast0.FILEINFO(string_mcode old_file, string_mcode new_file) - | Ast0.DECL(statement_dots) -> - Ast0.DECL(statement statement_dots) - | Ast0.CODE(stmt_dots) -> Ast0.CODE(statement_dots stmt_dots) - | Ast0.ERRORWORDS(exps) -> Ast0.ERRORWORDS(List.map expression exps) - | Ast0.OTHER(_) -> failwith "unexpected code") in - topfn all_functions k t - - and anything a = (* for compile_iso, not parameterisable *) - let k = function - Ast0.DotsExprTag(exprs) -> Ast0.DotsExprTag(expression_dots exprs) - | Ast0.DotsInitTag(inits) -> Ast0.DotsInitTag(initialiser_list inits) - | Ast0.DotsParamTag(params) -> Ast0.DotsParamTag(parameter_list params) - | Ast0.DotsStmtTag(stmts) -> Ast0.DotsStmtTag(statement_dots stmts) - | Ast0.DotsDeclTag(decls) -> Ast0.DotsDeclTag(declaration_dots decls) - | Ast0.DotsCaseTag(cases) -> Ast0.DotsCaseTag(case_line_dots cases) - | Ast0.IdentTag(id) -> Ast0.IdentTag(ident id) - | Ast0.ExprTag(exp) -> Ast0.ExprTag(expression exp) - | Ast0.ArgExprTag(exp) -> Ast0.ArgExprTag(expression exp) - | Ast0.TestExprTag(exp) -> Ast0.TestExprTag(expression exp) - | Ast0.TypeCTag(ty) -> Ast0.TypeCTag(typeC ty) - | Ast0.ParamTag(param) -> Ast0.ParamTag(parameterTypeDef param) - | Ast0.InitTag(init) -> Ast0.InitTag(initialiser init) - | Ast0.DeclTag(decl) -> Ast0.DeclTag(declaration decl) - | Ast0.StmtTag(stmt) -> Ast0.StmtTag(statement stmt) - | Ast0.CaseLineTag(c) -> Ast0.CaseLineTag(case_line c) - | Ast0.TopTag(top) -> Ast0.TopTag(top_level top) - | Ast0.IsoWhenTag(x) -> Ast0.IsoWhenTag(x) - | Ast0.IsoWhenTTag(e) -> Ast0.IsoWhenTTag(expression e) - | Ast0.IsoWhenFTag(e) -> Ast0.IsoWhenFTag(expression e) - | Ast0.MetaPosTag(var) -> failwith "not supported" in - k a - - (* not done for combiner, because the statement is assumed to be already - represented elsewhere in the code *) - - and all_functions = - {rebuilder_ident = ident; - rebuilder_expression = expression; - rebuilder_typeC = typeC; - rebuilder_declaration = declaration; - rebuilder_initialiser = initialiser; - rebuilder_initialiser_list = initialiser_list; - rebuilder_parameter = parameterTypeDef; - rebuilder_parameter_list = parameter_list; - rebuilder_statement = statement; - rebuilder_case_line = case_line; - rebuilder_top_level = top_level; - rebuilder_expression_dots = expression_dots; - rebuilder_statement_dots = statement_dots; - rebuilder_declaration_dots = declaration_dots; - rebuilder_case_line_dots = case_line_dots; - rebuilder_anything = anything} in - all_functions +(* +* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen +* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller +* This file is part of Coccinelle. +* +* Coccinelle 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, according to version 2 of the License. +* +* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . +* +* The authors reserve the right to distribute this or future versions of +* Coccinelle under other licenses. +*) + + +(* --------------------------------------------------------------------- *) +(* Generic traversal: rebuilder *) + +module Ast = Ast_cocci +module Ast0 = Ast0_cocci +module VT0 = Visitor_ast0_types + +type mode = COMBINER | REBUILDER | BOTH + +let map_split f l = List.split(List.map f l) + +let rewrap x (n,e) = (n,Ast0.rewrap x e) + +let visitor mode bind option_default + meta_mcode string_mcode const_mcode assign_mcode fix_mcode unary_mcode + binary_mcode cv_mcode sign_mcode struct_mcode storage_mcode + inc_mcode + dotsexprfn dotsinitfn dotsparamfn dotsstmtfn dotsdeclfn dotscasefn + identfn exprfn tyfn initfn paramfn declfn stmtfn casefn topfn = + let multibind l = + let rec loop = function + [] -> option_default + | [x] -> x + | x::xs -> bind x (loop xs) in + loop l in + let map_split_bind f l = + let (n,e) = List.split(List.map f l) in (multibind n,e) in + let get_option f = function + Some x -> let (n,e) = f x in (n,Some e) + | None -> (option_default,None) in + let rec expression_dots d = + let k d = + rewrap d + (match Ast0.unwrap d with + Ast0.DOTS(l) -> + let (n,l) = map_split_bind expression l in (n,Ast0.DOTS(l)) + | Ast0.CIRCLES(l) -> + let (n,l) = map_split_bind expression l in (n,Ast0.CIRCLES(l)) + | Ast0.STARS(l) -> + let (n,l) = map_split_bind expression l in (n,Ast0.STARS(l))) in + dotsexprfn all_functions k d + and initialiser_list i = + let k i = + rewrap i + (match Ast0.unwrap i with + Ast0.DOTS(l) -> + let (n,l) = map_split_bind initialiser l in (n,Ast0.DOTS(l)) + | Ast0.CIRCLES(l) -> + let (n,l) = map_split_bind initialiser l in (n,Ast0.CIRCLES(l)) + | Ast0.STARS(l) -> + let (n,l) = map_split_bind initialiser l in (n,Ast0.STARS(l))) in + dotsinitfn all_functions k i + + and parameter_list d = + let k d = + rewrap d + (match Ast0.unwrap d with + Ast0.DOTS(l) -> + let (n,l) = map_split_bind parameterTypeDef l in + (n,Ast0.DOTS(l)) + | Ast0.CIRCLES(l) -> + let (n,l) = map_split_bind parameterTypeDef l in + (n,Ast0.CIRCLES(l)) + | Ast0.STARS(l) -> + let (n,l) = map_split_bind parameterTypeDef l in + (n,Ast0.STARS(l))) in + dotsparamfn all_functions k d + + and statement_dots d = + let k d = + rewrap d + (match Ast0.unwrap d with + Ast0.DOTS(l) -> + let (n,l) = map_split_bind statement l in (n,Ast0.DOTS(l)) + | Ast0.CIRCLES(l) -> + let (n,l) = map_split_bind statement l in (n,Ast0.CIRCLES(l)) + | Ast0.STARS(l) -> + let (n,l) = map_split_bind statement l in (n,Ast0.STARS(l))) in + dotsstmtfn all_functions k d + + and declaration_dots d = + let k d = + rewrap d + (match Ast0.unwrap d with + Ast0.DOTS(l) -> + let (n,l) = map_split_bind declaration l in (n, Ast0.DOTS(l)) + | Ast0.CIRCLES(l) -> + let (n,l) = map_split_bind declaration l in (n, Ast0.CIRCLES(l)) + | Ast0.STARS(l) -> + let (n,l) = map_split_bind declaration l in (n, Ast0.STARS(l))) in + dotsdeclfn all_functions k d + + and case_line_dots d = + let k d = + rewrap d + (match Ast0.unwrap d with + Ast0.DOTS(l) -> + let (n,l) = map_split_bind case_line l in (n, Ast0.DOTS(l)) + | Ast0.CIRCLES(l) -> + let (n,l) = map_split_bind case_line l in (n, Ast0.CIRCLES(l)) + | Ast0.STARS(l) -> + let (n,l) = map_split_bind case_line l in (n, Ast0.STARS(l))) in + dotscasefn all_functions k d + + and ident i = + let k i = + rewrap i + (match Ast0.unwrap i with + Ast0.Id(name) -> + let (n,name) = string_mcode name in (n,Ast0.Id(name)) + | Ast0.MetaId(name,constraints,pure) -> + let (n,name) = meta_mcode name in + (n,Ast0.MetaId(name,constraints,pure)) + | Ast0.MetaFunc(name,constraints,pure) -> + let (n,name) = meta_mcode name in + (n,Ast0.MetaFunc(name,constraints,pure)) + | Ast0.MetaLocalFunc(name,constraints,pure) -> + let (n,name) = meta_mcode name in + (n,Ast0.MetaLocalFunc(name,constraints,pure)) + | Ast0.OptIdent(id) -> + let (n,id) = ident id in (n,Ast0.OptIdent(id)) + | Ast0.UniqueIdent(id) -> + let (n,id) = ident id in (n,Ast0.UniqueIdent(id))) in + identfn all_functions k i + + and expression e = + let k e = + rewrap e + (match Ast0.unwrap e with + Ast0.Ident(id) -> + let (n,id) = ident id in (n,Ast0.Ident(id)) + | Ast0.Constant(const) -> + let (n,const) = const_mcode const in (n,Ast0.Constant(const)) + | Ast0.FunCall(fn,lp,args,rp) -> + let (fn_n,fn) = expression fn in + let (lp_n,lp) = string_mcode lp in + let (args_n,args) = expression_dots args in + let (rp_n,rp) = string_mcode rp in + (multibind [fn_n;lp_n;args_n;rp_n], Ast0.FunCall(fn,lp,args,rp)) + | Ast0.Assignment(left,op,right,simple) -> + let (left_n,left) = expression left in + let (op_n,op) = assign_mcode op in + let (right_n,right) = expression right in + (multibind [left_n;op_n;right_n], + Ast0.Assignment(left,op,right,simple)) + | Ast0.CondExpr(exp1,why,exp2,colon,exp3) -> + let (exp1_n,exp1) = expression exp1 in + let (why_n,why) = string_mcode why in + let (exp2_n,exp2) = get_option expression exp2 in + let (colon_n,colon) = string_mcode colon in + let (exp3_n,exp3) = expression exp3 in + (multibind [exp1_n;why_n;exp2_n;colon_n;exp3_n], + Ast0.CondExpr(exp1,why,exp2,colon,exp3)) + | Ast0.Postfix(exp,op) -> + let (exp_n,exp) = expression exp in + let (op_n,op) = fix_mcode op in + (bind exp_n op_n, Ast0.Postfix(exp,op)) + | Ast0.Infix(exp,op) -> + let (exp_n,exp) = expression exp in + let (op_n,op) = fix_mcode op in + (bind op_n exp_n, Ast0.Infix(exp,op)) + | Ast0.Unary(exp,op) -> + let (exp_n,exp) = expression exp in + let (op_n,op) = unary_mcode op in + (bind op_n exp_n, Ast0.Unary(exp,op)) + | Ast0.Binary(left,op,right) -> + let (left_n,left) = expression left in + let (op_n,op) = binary_mcode op in + let (right_n,right) = expression right in + (multibind [left_n;op_n;right_n], Ast0.Binary(left,op,right)) + | Ast0.Nested(left,op,right) -> + let (left_n,left) = expression left in + let (op_n,op) = binary_mcode op in + let (right_n,right) = expression right in + (multibind [left_n;op_n;right_n], Ast0.Nested(left,op,right)) + | Ast0.Paren(lp,exp,rp) -> + let (lp_n,lp) = string_mcode lp in + let (exp_n,exp) = expression exp in + let (rp_n,rp) = string_mcode rp in + (multibind [lp_n;exp_n;rp_n], Ast0.Paren(lp,exp,rp)) + | Ast0.ArrayAccess(exp1,lb,exp2,rb) -> + let (exp1_n,exp1) = expression exp1 in + let (lb_n,lb) = string_mcode lb in + let (exp2_n,exp2) = expression exp2 in + let (rb_n,rb) = string_mcode rb in + (multibind [exp1_n;lb_n;exp2_n;rb_n], + Ast0.ArrayAccess(exp1,lb,exp2,rb)) + | Ast0.RecordAccess(exp,pt,field) -> + let (exp_n,exp) = expression exp in + let (pt_n,pt) = string_mcode pt in + let (field_n,field) = ident field in + (multibind [exp_n;pt_n;field_n], Ast0.RecordAccess(exp,pt,field)) + | Ast0.RecordPtAccess(exp,ar,field) -> + let (exp_n,exp) = expression exp in + let (ar_n,ar) = string_mcode ar in + let (field_n,field) = ident field in + (multibind [exp_n;ar_n;field_n], Ast0.RecordPtAccess(exp,ar,field)) + | Ast0.Cast(lp,ty,rp,exp) -> + let (lp_n,lp) = string_mcode lp in + let (ty_n,ty) = typeC ty in + let (rp_n,rp) = string_mcode rp in + let (exp_n,exp) = expression exp in + (multibind [lp_n;ty_n;rp_n;exp_n], Ast0.Cast(lp,ty,rp,exp)) + | Ast0.SizeOfExpr(szf,exp) -> + let (szf_n,szf) = string_mcode szf in + let (exp_n,exp) = expression exp in + (multibind [szf_n;exp_n],Ast0.SizeOfExpr(szf,exp)) + | Ast0.SizeOfType(szf,lp,ty,rp) -> + let (szf_n,szf) = string_mcode szf in + let (lp_n,lp) = string_mcode lp in + let (ty_n,ty) = typeC ty in + let (rp_n,rp) = string_mcode rp in + (multibind [szf_n;lp_n;ty_n;rp_n], Ast0.SizeOfType(szf,lp,ty,rp)) + | Ast0.TypeExp(ty) -> + let (ty_n,ty) = typeC ty in + (ty_n,Ast0.TypeExp(ty)) + | Ast0.MetaErr(name,constraints,pure) -> + let (name_n,name) = meta_mcode name in + (name_n,Ast0.MetaErr(name,constraints,pure)) + | Ast0.MetaExpr(name,constraints,ty,form,pure) -> + let (name_n,name) = meta_mcode name in + (name_n,Ast0.MetaExpr(name,constraints,ty,form,pure)) + | Ast0.MetaExprList(name,lenname,pure) -> + let (name_n,name) = meta_mcode name in + (name_n,Ast0.MetaExprList(name,lenname,pure)) + | Ast0.EComma(cm) -> + let (cm_n,cm) = string_mcode cm in (cm_n,Ast0.EComma(cm)) + | Ast0.DisjExpr(starter,expr_list,mids,ender) -> + let (starter_n,starter) = string_mcode starter in + let (expr_list_n,expr_list) = map_split expression expr_list in + let (mids_n,mids) = map_split string_mcode mids in + let (ender_n,ender) = string_mcode ender in + (multibind + [starter_n;List.hd expr_list_n; + multibind (List.map2 bind mids_n (List.tl expr_list_n)); + ender_n], + Ast0.DisjExpr(starter,expr_list,mids,ender)) + | Ast0.NestExpr(starter,expr_dots,ender,whencode,multi) -> + let (starter_n,starter) = string_mcode starter in + let (expr_dots_n,expr_dots) = expression_dots expr_dots in + let (ender_n,ender) = string_mcode ender in + let (whencode_n,whencode) = get_option expression whencode in + (multibind [starter_n;expr_dots_n;ender_n;whencode_n], + Ast0.NestExpr(starter,expr_dots,ender,whencode,multi)) + | Ast0.Edots(dots,whencode) -> + let (dots_n,dots) = string_mcode dots in + let (whencode_n,whencode) = get_option expression whencode in + (bind dots_n whencode_n,Ast0.Edots(dots,whencode)) + | Ast0.Ecircles(dots,whencode) -> + let (dots_n,dots) = string_mcode dots in + let (whencode_n,whencode) = get_option expression whencode in + (bind dots_n whencode_n,Ast0.Ecircles(dots,whencode)) + | Ast0.Estars(dots,whencode) -> + let (dots_n,dots) = string_mcode dots in + let (whencode_n,whencode) = get_option expression whencode in + (bind dots_n whencode_n,Ast0.Estars(dots,whencode)) + | Ast0.OptExp(exp) -> + let (exp_n,exp) = expression exp in + (exp_n,Ast0.OptExp(exp)) + | Ast0.UniqueExp(exp) -> + let (exp_n,exp) = expression exp in + (exp_n,Ast0.UniqueExp(exp))) in + exprfn all_functions k e + and typeC t = + let k t = + rewrap t + (match Ast0.unwrap t with + Ast0.ConstVol(cv,ty) -> + let (cv_n,cv) = cv_mcode cv in + let (ty_n,ty) = typeC ty in + (bind cv_n ty_n, Ast0.ConstVol(cv,ty)) + | Ast0.BaseType(ty,strings) -> + let (strings_n,strings) = map_split_bind string_mcode strings in + (strings_n, Ast0.BaseType(ty,strings)) + | Ast0.Signed(sign,ty) -> + let (sign_n,sign) = sign_mcode sign in + let (ty_n,ty) = get_option typeC ty in + (bind sign_n ty_n, Ast0.Signed(sign,ty)) + | Ast0.Pointer(ty,star) -> + let (ty_n,ty) = typeC ty in + let (star_n,star) = string_mcode star in + (bind ty_n star_n, Ast0.Pointer(ty,star)) + | Ast0.FunctionPointer(ty,lp1,star,rp1,lp2,params,rp2) -> + function_pointer (ty,lp1,star,rp1,lp2,params,rp2) [] + | Ast0.FunctionType(ty,lp1,params,rp1) -> + function_type (ty,lp1,params,rp1) [] + | Ast0.Array(ty,lb,size,rb) -> array_type (ty,lb,size,rb) [] + | Ast0.EnumName(kind,name) -> + let (kind_n,kind) = string_mcode kind in + let (name_n,name) = ident name in + (bind kind_n name_n, Ast0.EnumName(kind,name)) + | Ast0.StructUnionName(kind,name) -> + let (kind_n,kind) = struct_mcode kind in + let (name_n,name) = get_option ident name in + (bind kind_n name_n, Ast0.StructUnionName(kind,name)) + | Ast0.StructUnionDef(ty,lb,decls,rb) -> + let (ty_n,ty) = typeC ty in + let (lb_n,lb) = string_mcode lb in + let (decls_n,decls) = declaration_dots decls in + let (rb_n,rb) = string_mcode rb in + (multibind [ty_n;lb_n;decls_n;rb_n], + Ast0.StructUnionDef(ty,lb,decls,rb)) + | Ast0.TypeName(name) -> + let (name_n,name) = string_mcode name in + (name_n,Ast0.TypeName(name)) + | Ast0.MetaType(name,pure) -> + let (name_n,name) = meta_mcode name in + (name_n,Ast0.MetaType(name,pure)) + | Ast0.DisjType(starter,types,mids,ender) -> + let (starter_n,starter) = string_mcode starter in + let (types_n,types) = map_split typeC types in + let (mids_n,mids) = map_split string_mcode mids in + let (ender_n,ender) = string_mcode ender in + (multibind + [starter_n;List.hd types_n; + multibind (List.map2 bind mids_n (List.tl types_n)); + ender_n], + Ast0.DisjType(starter,types,mids,ender)) + | Ast0.OptType(ty) -> + let (ty_n,ty) = typeC ty in (ty_n, Ast0.OptType(ty)) + | Ast0.UniqueType(ty) -> + let (ty_n,ty) = typeC ty in (ty_n, Ast0.UniqueType(ty))) in + tyfn all_functions k t + + and function_pointer (ty,lp1,star,rp1,lp2,params,rp2) extra = + let (ty_n,ty) = typeC ty in + let (lp1_n,lp1) = string_mcode lp1 in + let (star_n,star) = string_mcode star in + let (rp1_n,rp1) = string_mcode rp1 in + let (lp2_n,lp2) = string_mcode lp2 in + let (params_n,params) = parameter_list params in + let (rp2_n,rp2) = string_mcode rp2 in + (* have to put the treatment of the identifier into the right position *) + (multibind ([ty_n;lp1_n;star_n] @ extra @ [rp1_n;lp2_n;params_n;rp2_n]), + Ast0.FunctionPointer(ty,lp1,star,rp1,lp2,params,rp2)) + and function_type (ty,lp1,params,rp1) extra = + let (ty_n,ty) = get_option typeC ty in + let (lp1_n,lp1) = string_mcode lp1 in + let (params_n,params) = parameter_list params in + let (rp1_n,rp1) = string_mcode rp1 in + (* have to put the treatment of the identifier into the right position *) + (multibind (ty_n :: extra @ [lp1_n;params_n;rp1_n]), + Ast0.FunctionType(ty,lp1,params,rp1)) + and array_type (ty,lb,size,rb) extra = + let (ty_n,ty) = typeC ty in + let (lb_n,lb) = string_mcode lb in + let (size_n,size) = get_option expression size in + let (rb_n,rb) = string_mcode rb in + (multibind (ty_n :: extra @ [lb_n;size_n;rb_n]), + Ast0.Array(ty,lb,size,rb)) + + and named_type ty id = + let (id_n,id) = ident id in + match Ast0.unwrap ty with + Ast0.FunctionPointer(rty,lp1,star,rp1,lp2,params,rp2) -> + let tyres = + function_pointer (rty,lp1,star,rp1,lp2,params,rp2) [id_n] in + (rewrap ty tyres, id) + | Ast0.FunctionType(rty,lp1,params,rp1) -> + let tyres = function_type (rty,lp1,params,rp1) [id_n] in + (rewrap ty tyres, id) + | Ast0.Array(rty,lb,size,rb) -> + let tyres = array_type (rty,lb,size,rb) [id_n] in + (rewrap ty tyres, id) + | _ -> let (ty_n,ty) = typeC ty in ((bind ty_n id_n, ty), id) + + and declaration d = + let k d = + rewrap d + (match Ast0.unwrap d with + Ast0.Init(stg,ty,id,eq,ini,sem) -> + let (stg_n,stg) = get_option storage_mcode stg in + let ((ty_id_n,ty),id) = named_type ty id in + let (eq_n,eq) = string_mcode eq in + let (ini_n,ini) = initialiser ini in + let (sem_n,sem) = string_mcode sem in + (multibind [stg_n;ty_id_n;eq_n;ini_n;sem_n], + Ast0.Init(stg,ty,id,eq,ini,sem)) + | Ast0.UnInit(stg,ty,id,sem) -> + let (stg_n,stg) = get_option storage_mcode stg in + let ((ty_id_n,ty),id) = named_type ty id in + let (sem_n,sem) = string_mcode sem in + (multibind [stg_n;ty_id_n;sem_n], Ast0.UnInit(stg,ty,id,sem)) + | Ast0.MacroDecl(name,lp,args,rp,sem) -> + let (name_n,name) = ident name in + let (lp_n,lp) = string_mcode lp in + let (args_n,args) = expression_dots args in + let (rp_n,rp) = string_mcode rp in + let (sem_n,sem) = string_mcode sem in + (multibind [name_n;lp_n;args_n;rp_n;sem_n], + Ast0.MacroDecl(name,lp,args,rp,sem)) + | Ast0.TyDecl(ty,sem) -> + let (ty_n,ty) = typeC ty in + let (sem_n,sem) = string_mcode sem in + (bind ty_n sem_n, Ast0.TyDecl(ty,sem)) + | Ast0.Typedef(stg,ty,id,sem) -> + let (stg_n,stg) = string_mcode stg in + let (ty_n,ty) = typeC ty in + let (id_n,id) = typeC id in + let (sem_n,sem) = string_mcode sem in + (multibind [stg_n;ty_n;id_n;sem_n], Ast0.Typedef(stg,ty,id,sem)) + | Ast0.DisjDecl(starter,decls,mids,ender) -> + let (starter_n,starter) = string_mcode starter in + let (decls_n,decls) = map_split declaration decls in + let (mids_n,mids) = map_split string_mcode mids in + let (ender_n,ender) = string_mcode ender in + (multibind + [starter_n;List.hd decls_n; + multibind (List.map2 bind mids_n (List.tl decls_n)); + ender_n], + Ast0.DisjDecl(starter,decls,mids,ender)) + | Ast0.Ddots(dots,whencode) -> + let (dots_n,dots) = string_mcode dots in + let (whencode_n,whencode) = get_option declaration whencode in + (bind dots_n whencode_n, Ast0.Ddots(dots,whencode)) + | Ast0.OptDecl(decl) -> + let (n,decl) = declaration decl in (n,Ast0.OptDecl(decl)) + | Ast0.UniqueDecl(decl) -> + let (n,decl) = declaration decl in (n,Ast0.UniqueDecl(decl))) in + declfn all_functions k d + + and initialiser i = + let k i = + rewrap i + (match Ast0.unwrap i with + Ast0.MetaInit(name,pure) -> + let (name_n,name) = meta_mcode name in + (name_n,Ast0.MetaInit(name,pure)) + | Ast0.InitExpr(exp) -> + let (exp_n,exp) = expression exp in + (exp_n,Ast0.InitExpr(exp)) + | Ast0.InitList(lb,initlist,rb) -> + let (lb_n,lb) = string_mcode lb in + let (initlist_n,initlist) = initialiser_list initlist in + let (rb_n,rb) = string_mcode rb in + (multibind [lb_n;initlist_n;rb_n], Ast0.InitList(lb,initlist,rb)) + | Ast0.InitGccExt(designators,eq,ini) -> + let (dn,designators) = map_split_bind designator designators in + let (eq_n,eq) = string_mcode eq in + let (ini_n,ini) = initialiser ini in + (multibind [dn;eq_n;ini_n], Ast0.InitGccExt(designators,eq,ini)) + | Ast0.InitGccName(name,eq,ini) -> + let (name_n,name) = ident name in + let (eq_n,eq) = string_mcode eq in + let (ini_n,ini) = initialiser ini in + (multibind [name_n;eq_n;ini_n], Ast0.InitGccName(name,eq,ini)) + | Ast0.IComma(cm) -> + let (n,cm) = string_mcode cm in (n,Ast0.IComma(cm)) + | Ast0.Idots(d,whencode) -> + let (d_n,d) = string_mcode d in + let (whencode_n,whencode) = get_option initialiser whencode in + (bind d_n whencode_n, Ast0.Idots(d,whencode)) + | Ast0.OptIni(i) -> + let (n,i) = initialiser i in (n,Ast0.OptIni(i)) + | Ast0.UniqueIni(i) -> + let (n,i) = initialiser i in (n,Ast0.UniqueIni(i))) in + initfn all_functions k i + + and designator = function + Ast0.DesignatorField(dot,id) -> + let (dot_n,dot) = string_mcode dot in + let (id_n,id) = ident id in + (bind dot_n id_n, Ast0.DesignatorField(dot,id)) + | Ast0.DesignatorIndex(lb,exp,rb) -> + let (lb_n,lb) = string_mcode lb in + let (exp_n,exp) = expression exp in + let (rb_n,rb) = string_mcode rb in + (multibind [lb_n;exp_n;rb_n], Ast0.DesignatorIndex(lb,exp,rb)) + | Ast0.DesignatorRange(lb,min,dots,max,rb) -> + let (lb_n,lb) = string_mcode lb in + let (min_n,min) = expression min in + let (dots_n,dots) = string_mcode dots in + let (max_n,max) = expression max in + let (rb_n,rb) = string_mcode rb in + (multibind [lb_n;min_n;dots_n;max_n;rb_n], + Ast0.DesignatorRange(lb,min,dots,max,rb)) + + and parameterTypeDef p = + let k p = + rewrap p + (match Ast0.unwrap p with + Ast0.VoidParam(ty) -> + let (n,ty) = typeC ty in (n,Ast0.VoidParam(ty)) + | Ast0.Param(ty,id) -> + let (ty_n,ty) = typeC ty in + let (id_n,id) = get_option ident id in + (bind ty_n id_n, Ast0.Param(ty,id)) + | Ast0.MetaParam(name,pure) -> + let (n,name) = meta_mcode name in + (n,Ast0.MetaParam(name,pure)) + | Ast0.MetaParamList(name,lenname,pure) -> + let (n,name) = meta_mcode name in + (n,Ast0.MetaParamList(name,lenname,pure)) + | Ast0.PComma(cm) -> + let (n,cm) = string_mcode cm in (n,Ast0.PComma(cm)) + | Ast0.Pdots(dots) -> + let (n,dots) = string_mcode dots in (n,Ast0.Pdots(dots)) + | Ast0.Pcircles(dots) -> + let (n,dots) = string_mcode dots in (n,Ast0.Pcircles(dots)) + | Ast0.OptParam(param) -> + let (n,param) = parameterTypeDef param in (n,Ast0.OptParam(param)) + | Ast0.UniqueParam(param) -> + let (n,param) = parameterTypeDef param in + (n,Ast0.UniqueParam(param))) in + paramfn all_functions k p + + (* not done for combiner, because the statement is assumed to be already + represented elsewhere in the code *) + (* NOTE: This is not called for combiner_rebuilder. This is ok for its + only current use. *) + and process_bef_aft s = + Ast0.set_dots_bef_aft s + (match Ast0.get_dots_bef_aft s with + Ast0.NoDots -> Ast0.NoDots + | Ast0.DroppingBetweenDots(stm) -> + let (_,stm) = statement stm in Ast0.DroppingBetweenDots(stm) + | Ast0.AddingBetweenDots(stm) -> + let (_,stm) = statement stm in Ast0.AddingBetweenDots(stm)) + + and statement s = + (if mode = COMBINER then let _ = process_bef_aft s in ()); + let k s = + rewrap s + (match Ast0.unwrap s with + Ast0.FunDecl(bef,fi,name,lp,params,rp,lbrace,body,rbrace) -> + let (fi_n,fi) = map_split_bind fninfo fi in + let (name_n,name) = ident name in + let (lp_n,lp) = string_mcode lp in + let (params_n,params) = parameter_list params in + let (rp_n,rp) = string_mcode rp in + let (lbrace_n,lbrace) = string_mcode lbrace in + let (body_n,body) = statement_dots body in + let (rbrace_n,rbrace) = string_mcode rbrace in + (multibind + [fi_n;name_n;lp_n;params_n;rp_n;lbrace_n;body_n;rbrace_n], + Ast0.FunDecl(bef,fi,name,lp,params,rp,lbrace,body,rbrace)) + | Ast0.Decl(bef,decl) -> + let (decl_n,decl) = declaration decl in + (decl_n,Ast0.Decl(bef,decl)) + | Ast0.Seq(lbrace,body,rbrace) -> + let (lbrace_n,lbrace) = string_mcode lbrace in + let (body_n,body) = statement_dots body in + let (rbrace_n,rbrace) = string_mcode rbrace in + (multibind [lbrace_n;body_n;rbrace_n], + Ast0.Seq(lbrace,body,rbrace)) + | Ast0.ExprStatement(exp,sem) -> + let (exp_n,exp) = expression exp in + let (sem_n,sem) = string_mcode sem in + (bind exp_n sem_n, Ast0.ExprStatement(exp,sem)) + | Ast0.IfThen(iff,lp,exp,rp,branch1,aft) -> + let (iff_n,iff) = string_mcode iff in + let (lp_n,lp) = string_mcode lp in + let (exp_n,exp) = expression exp in + let (rp_n,rp) = string_mcode rp in + let (branch1_n,branch1) = statement branch1 in + (multibind [iff_n;lp_n;exp_n;rp_n;branch1_n], + Ast0.IfThen(iff,lp,exp,rp,branch1,aft)) + | Ast0.IfThenElse(iff,lp,exp,rp,branch1,els,branch2,aft) -> + let (iff_n,iff) = string_mcode iff in + let (lp_n,lp) = string_mcode lp in + let (exp_n,exp) = expression exp in + let (rp_n,rp) = string_mcode rp in + let (branch1_n,branch1) = statement branch1 in + let (els_n,els) = string_mcode els in + let (branch2_n,branch2) = statement branch2 in + (multibind [iff_n;lp_n;exp_n;rp_n;branch1_n;els_n;branch2_n], + Ast0.IfThenElse(iff,lp,exp,rp,branch1,els,branch2,aft)) + | Ast0.While(whl,lp,exp,rp,body,aft) -> + let (whl_n,whl) = string_mcode whl in + let (lp_n,lp) = string_mcode lp in + let (exp_n,exp) = expression exp in + let (rp_n,rp) = string_mcode rp in + let (body_n,body) = statement body in + (multibind [whl_n;lp_n;exp_n;rp_n;body_n], + Ast0.While(whl,lp,exp,rp,body,aft)) + | Ast0.Do(d,body,whl,lp,exp,rp,sem) -> + let (d_n,d) = string_mcode d in + let (body_n,body) = statement body in + let (whl_n,whl) = string_mcode whl in + let (lp_n,lp) = string_mcode lp in + let (exp_n,exp) = expression exp in + let (rp_n,rp) = string_mcode rp in + let (sem_n,sem) = string_mcode sem in + (multibind [d_n;body_n;whl_n;lp_n;exp_n;rp_n;sem_n], + Ast0.Do(d,body,whl,lp,exp,rp,sem)) + | Ast0.For(fr,lp,e1,sem1,e2,sem2,e3,rp,body,aft) -> + let (fr_n,fr) = string_mcode fr in + let (lp_n,lp) = string_mcode lp in + let (e1_n,e1) = get_option expression e1 in + let (sem1_n,sem1) = string_mcode sem1 in + let (e2_n,e2) = get_option expression e2 in + let (sem2_n,sem2) = string_mcode sem2 in + let (e3_n,e3) = get_option expression e3 in + let (rp_n,rp) = string_mcode rp in + let (body_n,body) = statement body in + (multibind [fr_n;lp_n;e1_n;sem1_n;e2_n;sem2_n;e3_n;rp_n;body_n], + Ast0.For(fr,lp,e1,sem1,e2,sem2,e3,rp,body,aft)) + | Ast0.Iterator(nm,lp,args,rp,body,aft) -> + let (nm_n,nm) = ident nm in + let (lp_n,lp) = string_mcode lp in + let (args_n,args) = expression_dots args in + let (rp_n,rp) = string_mcode rp in + let (body_n,body) = statement body in + (multibind [nm_n;lp_n;args_n;rp_n;body_n], + Ast0.Iterator(nm,lp,args,rp,body,aft)) + | Ast0.Switch(switch,lp,exp,rp,lb,cases,rb) -> + let (switch_n,switch) = string_mcode switch in + let (lp_n,lp) = string_mcode lp in + let (exp_n,exp) = expression exp in + let (rp_n,rp) = string_mcode rp in + let (lb_n,lb) = string_mcode lb in + let (cases_n,cases) = case_line_dots cases in + let (rb_n,rb) = string_mcode rb in + (multibind [switch_n;lp_n;exp_n;rp_n;lb_n;cases_n;rb_n], + Ast0.Switch(switch,lp,exp,rp,lb,cases,rb)) + | Ast0.Break(br,sem) -> + let (br_n,br) = string_mcode br in + let (sem_n,sem) = string_mcode sem in + (bind br_n sem_n, Ast0.Break(br,sem)) + | Ast0.Continue(cont,sem) -> + let (cont_n,cont) = string_mcode cont in + let (sem_n,sem) = string_mcode sem in + (bind cont_n sem_n, Ast0.Continue(cont,sem)) + | Ast0.Label(l,dd) -> + let (l_n,l) = ident l in + let (dd_n,dd) = string_mcode dd in + (bind l_n dd_n, Ast0.Label(l,dd)) + | Ast0.Goto(goto,l,sem) -> + let (goto_n,goto) = string_mcode goto in + let (l_n,l) = ident l in + let (sem_n,sem) = string_mcode sem in + (bind goto_n (bind l_n sem_n), Ast0.Goto(goto,l,sem)) + | Ast0.Return(ret,sem) -> + let (ret_n,ret) = string_mcode ret in + let (sem_n,sem) = string_mcode sem in + (bind ret_n sem_n, Ast0.Return(ret,sem)) + | Ast0.ReturnExpr(ret,exp,sem) -> + let (ret_n,ret) = string_mcode ret in + let (exp_n,exp) = expression exp in + let (sem_n,sem) = string_mcode sem in + (multibind [ret_n;exp_n;sem_n], Ast0.ReturnExpr(ret,exp,sem)) + | Ast0.MetaStmt(name,pure) -> + let (name_n,name) = meta_mcode name in + (name_n,Ast0.MetaStmt(name,pure)) + | Ast0.MetaStmtList(name,pure) -> + let (name_n,name) = meta_mcode name in + (name_n,Ast0.MetaStmtList(name,pure)) + | Ast0.Disj(starter,statement_dots_list,mids,ender) -> + let (starter_n,starter) = string_mcode starter in + let (s_n,statement_dots_list) = + map_split statement_dots statement_dots_list in + let (mids_n,mids) = map_split string_mcode mids in + let (ender_n,ender) = string_mcode ender in + (multibind + [starter_n;List.hd s_n; + multibind (List.map2 bind mids_n (List.tl s_n)); + ender_n], + Ast0.Disj(starter,statement_dots_list,mids,ender)) + | Ast0.Nest(starter,stmt_dots,ender,whn,multi) -> + let (starter_n,starter) = string_mcode starter in + let (stmt_dots_n,stmt_dots) = statement_dots stmt_dots in + let (ender_n,ender) = string_mcode ender in + let (whn_n,whn) = + map_split_bind (whencode statement_dots statement) whn in + (multibind [starter_n;stmt_dots_n;ender_n;whn_n], + Ast0.Nest(starter,stmt_dots,ender,whn,multi)) + | Ast0.Exp(exp) -> + let (exp_n,exp) = expression exp in + (exp_n,Ast0.Exp(exp)) + | Ast0.TopExp(exp) -> + let (exp_n,exp) = expression exp in + (exp_n,Ast0.TopExp(exp)) + | Ast0.Ty(ty) -> + let (ty_n,ty) = typeC ty in + (ty_n,Ast0.Ty(ty)) + | Ast0.TopInit(init) -> + let (init_n,init) = initialiser init in + (init_n,Ast0.TopInit(init)) + | Ast0.Dots(d,whn) -> + let (d_n,d) = string_mcode d in + let (whn_n,whn) = + map_split_bind (whencode statement_dots statement) whn in + (bind d_n whn_n, Ast0.Dots(d,whn)) + | Ast0.Circles(d,whn) -> + let (d_n,d) = string_mcode d in + let (whn_n,whn) = + map_split_bind (whencode statement_dots statement) whn in + (bind d_n whn_n, Ast0.Circles(d,whn)) + | Ast0.Stars(d,whn) -> + let (d_n,d) = string_mcode d in + let (whn_n,whn) = + map_split_bind (whencode statement_dots statement) whn in + (bind d_n whn_n, Ast0.Stars(d,whn)) + | Ast0.Include(inc,name) -> + let (inc_n,inc) = string_mcode inc in + let (name_n,name) = inc_mcode name in + (bind inc_n name_n, Ast0.Include(inc,name)) + | Ast0.Define(def,id,params,body) -> + let (def_n,def) = string_mcode def in + let (id_n,id) = ident id in + let (params_n,params) = define_parameters params in + let (body_n,body) = statement_dots body in + (multibind [def_n;id_n;params_n;body_n], + Ast0.Define(def,id,params,body)) + | Ast0.OptStm(re) -> + let (re_n,re) = statement re in (re_n,Ast0.OptStm(re)) + | Ast0.UniqueStm(re) -> + let (re_n,re) = statement re in (re_n,Ast0.UniqueStm(re))) in + let (n,s) = stmtfn all_functions k s in + (n,if mode = REBUILDER then process_bef_aft s else s) + + (* not parameterizable for now... *) + and define_parameters p = + let k p = + rewrap p + (match Ast0.unwrap p with + Ast0.NoParams -> (option_default,Ast0.NoParams) + | Ast0.DParams(lp,params,rp) -> + let (lp_n,lp) = string_mcode lp in + let (params_n,params) = define_param_dots params in + let (rp_n,rp) = string_mcode rp in + (multibind [lp_n;params_n;rp_n], Ast0.DParams(lp,params,rp))) in + k p + + and define_param_dots d = + let k d = + rewrap d + (match Ast0.unwrap d with + Ast0.DOTS(l) -> + let (n,l) = map_split_bind define_param l in (n,Ast0.DOTS(l)) + | Ast0.CIRCLES(l) -> + let (n,l) = map_split_bind define_param l in (n,Ast0.CIRCLES(l)) + | Ast0.STARS(l) -> + let (n,l) = map_split_bind define_param l in (n,Ast0.STARS(l))) in + k d + + and define_param p = + let k p = + rewrap p + (match Ast0.unwrap p with + Ast0.DParam(id) -> let (n,id) = ident id in (n,Ast0.DParam(id)) + | Ast0.DPComma(comma) -> + let (n,comma) = string_mcode comma in (n,Ast0.DPComma(comma)) + | Ast0.DPdots(d) -> + let (n,d) = string_mcode d in (n,Ast0.DPdots(d)) + | Ast0.DPcircles(c) -> + let (n,c) = string_mcode c in (n,Ast0.DPcircles(c)) + | Ast0.OptDParam(dp) -> + let (n,dp) = define_param dp in (n,Ast0.OptDParam(dp)) + | Ast0.UniqueDParam(dp) -> + let (n,dp) = define_param dp in (n,Ast0.UniqueDParam(dp))) in + k p + + and fninfo = function + Ast0.FStorage(stg) -> + let (n,stg) = storage_mcode stg in (n,Ast0.FStorage(stg)) + | Ast0.FType(ty) -> let (n,ty) = typeC ty in (n,Ast0.FType(ty)) + | Ast0.FInline(inline) -> + let (n,inline) = string_mcode inline in (n,Ast0.FInline(inline)) + | Ast0.FAttr(init) -> + let (n,init) = string_mcode init in (n,Ast0.FAttr(init)) + + and whencode notfn alwaysfn = function + Ast0.WhenNot a -> let (n,a) = notfn a in (n,Ast0.WhenNot(a)) + | Ast0.WhenAlways a -> let (n,a) = alwaysfn a in (n,Ast0.WhenAlways(a)) + | Ast0.WhenModifier(x) -> (option_default,Ast0.WhenModifier(x)) + | Ast0.WhenNotTrue(e) -> + let (n,e) = expression e in (n,Ast0.WhenNotTrue(e)) + | Ast0.WhenNotFalse(e) -> + let (n,e) = expression e in (n,Ast0.WhenNotFalse(e)) + + and case_line c = + let k c = + rewrap c + (match Ast0.unwrap c with + Ast0.Default(def,colon,code) -> + let (def_n,def) = string_mcode def in + let (colon_n,colon) = string_mcode colon in + let (code_n,code) = statement_dots code in + (multibind [def_n;colon_n;code_n], Ast0.Default(def,colon,code)) + | Ast0.Case(case,exp,colon,code) -> + let (case_n,case) = string_mcode case in + let (exp_n,exp) = expression exp in + let (colon_n,colon) = string_mcode colon in + let (code_n,code) = statement_dots code in + (multibind [case_n;exp_n;colon_n;code_n], + Ast0.Case(case,exp,colon,code)) + | Ast0.OptCase(case) -> + let (n,case) = case_line case in (n,Ast0.OptCase(case))) in + casefn all_functions k c + + and top_level t = + let k t = + rewrap t + (match Ast0.unwrap t with + Ast0.FILEINFO(old_file,new_file) -> + let (old_file_n,old_file) = string_mcode old_file in + let (new_file_n,new_file) = string_mcode new_file in + (bind old_file_n new_file_n,Ast0.FILEINFO(old_file,new_file)) + | Ast0.DECL(statement_dots) -> + let (n,statement_dots) = statement statement_dots in + (n,Ast0.DECL(statement_dots)) + | Ast0.CODE(stmt_dots) -> + let (stmt_dots_n,stmt_dots) = statement_dots stmt_dots in + (stmt_dots_n, Ast0.CODE(stmt_dots)) + | Ast0.ERRORWORDS(exps) -> + let (n,exps) = map_split_bind expression exps in + (n, Ast0.ERRORWORDS(exps)) + | Ast0.OTHER(_) -> failwith "unexpected code") in + topfn all_functions k t + + and anything a = (* for compile_iso, not parameterisable *) + let k = function + Ast0.DotsExprTag(exprs) -> + let (exprs_n,exprs) = expression_dots exprs in + (exprs_n,Ast0.DotsExprTag(exprs)) + | Ast0.DotsInitTag(inits) -> + let (inits_n,inits) = initialiser_list inits in + (inits_n,Ast0.DotsInitTag(inits)) + | Ast0.DotsParamTag(params) -> + let (params_n,params) = parameter_list params in + (params_n,Ast0.DotsParamTag(params)) + | Ast0.DotsStmtTag(stmts) -> + let (stmts_n,stmts) = statement_dots stmts in + (stmts_n,Ast0.DotsStmtTag(stmts)) + | Ast0.DotsDeclTag(decls) -> + let (decls_n,decls) = declaration_dots decls in + (decls_n,Ast0.DotsDeclTag(decls)) + | Ast0.DotsCaseTag(cases) -> + let (cases_n,cases) = case_line_dots cases in + (cases_n,Ast0.DotsCaseTag(cases)) + | Ast0.IdentTag(id) -> + let (id_n,id) = ident id in + (id_n,Ast0.IdentTag(id)) + | Ast0.ExprTag(exp) -> + let (exp_n,exp) = expression exp in + (exp_n,Ast0.ExprTag(exp)) + | Ast0.ArgExprTag(exp) -> + let (exp_n,exp) = expression exp in + (exp_n,Ast0.ArgExprTag(exp)) + | Ast0.TestExprTag(exp) -> + let (exp_n,exp) = expression exp in + (exp_n,Ast0.TestExprTag(exp)) + | Ast0.TypeCTag(ty) -> + let (ty_n,ty) = typeC ty in + (ty_n,Ast0.TypeCTag(ty)) + | Ast0.ParamTag(param) -> + let (param_n,param) = parameterTypeDef param in + (param_n,Ast0.ParamTag(param)) + | Ast0.InitTag(init) -> + let (init_n,init) = initialiser init in + (init_n,Ast0.InitTag(init)) + | Ast0.DeclTag(decl) -> + let (decl_n,decl) = declaration decl in + (decl_n,Ast0.DeclTag(decl)) + | Ast0.StmtTag(stmt) -> + let (stmt_n,stmt) = statement stmt in + (stmt_n,Ast0.StmtTag(stmt)) + | Ast0.CaseLineTag(c) -> + let (c_n,c) = case_line c in + (c_n,Ast0.CaseLineTag(c)) + | Ast0.TopTag(top) -> + let (top_n,top) = top_level top in + (top_n,Ast0.TopTag(top)) + | Ast0.IsoWhenTag(x) -> (option_default,Ast0.IsoWhenTag(x)) + | Ast0.IsoWhenTTag(e) -> + let (e_n,e) = expression e in + (e_n,Ast0.IsoWhenTTag(e)) + | Ast0.IsoWhenFTag(e) -> + let (e_n,e) = expression e in + (e_n,Ast0.IsoWhenFTag(e)) + | Ast0.MetaPosTag(var) -> failwith "not supported" in + k a + + (* not done for combiner, because the statement is assumed to be already + represented elsewhere in the code *) + + and all_functions = + {VT0.ident = ident; + VT0.expression = expression; + VT0.typeC = typeC; + VT0.declaration = declaration; + VT0.initialiser = initialiser; + VT0.initialiser_list = initialiser_list; + VT0.parameter = parameterTypeDef; + VT0.parameter_list = parameter_list; + VT0.statement = statement; + VT0.case_line = case_line; + VT0.top_level = top_level; + VT0.expression_dots = expression_dots; + VT0.statement_dots = statement_dots; + VT0.declaration_dots = declaration_dots; + VT0.case_line_dots = case_line_dots; + VT0.anything = anything} in + all_functions + +let combiner_functions = + {VT0.combiner_meta_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_string_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_const_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_assign_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_fix_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_unary_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_binary_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_cv_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_sign_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_struct_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_storage_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_inc_mcode = (fun opt_default mc -> opt_default); + VT0.combiner_dotsexprfn = (fun r k e -> k e); + VT0.combiner_dotsinitfn = (fun r k e -> k e); + VT0.combiner_dotsparamfn = (fun r k e -> k e); + VT0.combiner_dotsstmtfn = (fun r k e -> k e); + VT0.combiner_dotsdeclfn = (fun r k e -> k e); + VT0.combiner_dotscasefn = (fun r k e -> k e); + VT0.combiner_identfn = (fun r k e -> k e); + VT0.combiner_exprfn = (fun r k e -> k e); + VT0.combiner_tyfn = (fun r k e -> k e); + VT0.combiner_initfn = (fun r k e -> k e); + VT0.combiner_paramfn = (fun r k e -> k e); + VT0.combiner_declfn = (fun r k e -> k e); + VT0.combiner_stmtfn = (fun r k e -> k e); + VT0.combiner_casefn = (fun r k e -> k e); + VT0.combiner_topfn = (fun r k e -> k e)} + +let combiner_dz r = + {VT0.combiner_rec_ident = + (function e -> let (n,_) = r.VT0.ident e in n); + VT0.combiner_rec_expression = + (function e -> let (n,_) = r.VT0.expression e in n); + VT0.combiner_rec_typeC = + (function e -> let (n,_) = r.VT0.typeC e in n); + VT0.combiner_rec_declaration = + (function e -> let (n,_) = r.VT0.declaration e in n); + VT0.combiner_rec_initialiser = + (function e -> let (n,_) = r.VT0.initialiser e in n); + VT0.combiner_rec_initialiser_list = + (function e -> let (n,_) = r.VT0.initialiser_list e in n); + VT0.combiner_rec_parameter = + (function e -> let (n,_) = r.VT0.parameter e in n); + VT0.combiner_rec_parameter_list = + (function e -> let (n,_) = r.VT0.parameter_list e in n); + VT0.combiner_rec_statement = + (function e -> let (n,_) = r.VT0.statement e in n); + VT0.combiner_rec_case_line = + (function e -> let (n,_) = r.VT0.case_line e in n); + VT0.combiner_rec_top_level = + (function e -> let (n,_) = r.VT0.top_level e in n); + VT0.combiner_rec_expression_dots = + (function e -> let (n,_) = r.VT0.expression_dots e in n); + VT0.combiner_rec_statement_dots = + (function e -> let (n,_) = r.VT0.statement_dots e in n); + VT0.combiner_rec_declaration_dots = + (function e -> let (n,_) = r.VT0.declaration_dots e in n); + VT0.combiner_rec_case_line_dots = + (function e -> let (n,_) = r.VT0.case_line_dots e in n); + VT0.combiner_rec_anything = + (function e -> let (n,_) = r.VT0.anything e in n)} + +let combiner bind option_default functions = + let xk k e = let (n,_) = k e in n in + let dz = combiner_dz in + combiner_dz + (visitor COMBINER bind option_default + (function mc -> (functions.VT0.combiner_meta_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_string_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_const_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_assign_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_fix_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_unary_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_binary_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_cv_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_sign_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_struct_mcode option_default mc,mc)) + (function mc -> + (functions.VT0.combiner_storage_mcode option_default mc,mc)) + (function mc -> (functions.VT0.combiner_inc_mcode option_default mc,mc)) + (fun r k e -> (functions.VT0.combiner_dotsexprfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_dotsinitfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_dotsparamfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_dotsstmtfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_dotsdeclfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_dotscasefn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_identfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_exprfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_tyfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_initfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_paramfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_declfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_stmtfn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_casefn (dz r) (xk k) e, e)) + (fun r k e -> (functions.VT0.combiner_topfn (dz r) (xk k) e, e))) + +let flat_combiner bind option_default + meta_mcode string_mcode const_mcode assign_mcode fix_mcode unary_mcode + binary_mcode cv_mcode sign_mcode struct_mcode storage_mcode + inc_mcode + dotsexprfn dotsinitfn dotsparamfn dotsstmtfn dotsdeclfn dotscasefn + identfn exprfn tyfn initfn paramfn declfn stmtfn casefn topfn = + let dz = combiner_dz in + let xk k e = let (n,_) = k e in n in + combiner_dz (visitor COMBINER bind option_default + (function mc -> (meta_mcode mc,mc)) + (function mc -> (string_mcode mc,mc)) + (function mc -> (const_mcode mc,mc)) + (function mc -> (assign_mcode mc,mc)) + (function mc -> (fix_mcode mc,mc)) + (function mc -> (unary_mcode mc,mc)) + (function mc -> (binary_mcode mc,mc)) + (function mc -> (cv_mcode mc,mc)) + (function mc -> (sign_mcode mc,mc)) + (function mc -> (struct_mcode mc,mc)) + (function mc -> (storage_mcode mc,mc)) + (function mc -> (inc_mcode mc,mc)) + (fun r k e -> (dotsexprfn (dz r) (xk k) e, e)) + (fun r k e -> (dotsinitfn (dz r) (xk k) e, e)) + (fun r k e -> (dotsparamfn (dz r) (xk k) e, e)) + (fun r k e -> (dotsstmtfn (dz r) (xk k) e, e)) + (fun r k e -> (dotsdeclfn (dz r) (xk k) e, e)) + (fun r k e -> (dotscasefn (dz r) (xk k) e, e)) + (fun r k e -> (identfn (dz r) (xk k) e, e)) + (fun r k e -> (exprfn (dz r) (xk k) e, e)) + (fun r k e -> (tyfn (dz r) (xk k) e, e)) + (fun r k e -> (initfn (dz r) (xk k) e, e)) + (fun r k e -> (paramfn (dz r) (xk k) e, e)) + (fun r k e -> (declfn (dz r) (xk k) e, e)) + (fun r k e -> (stmtfn (dz r) (xk k) e, e)) + (fun r k e -> (casefn (dz r) (xk k) e, e)) + (fun r k e -> (topfn (dz r) (xk k) e, e))) + +let rebuilder_functions = + {VT0.rebuilder_meta_mcode = (fun mc -> mc); + VT0.rebuilder_string_mcode = (fun mc -> mc); + VT0.rebuilder_const_mcode = (fun mc -> mc); + VT0.rebuilder_assign_mcode = (fun mc -> mc); + VT0.rebuilder_fix_mcode = (fun mc -> mc); + VT0.rebuilder_unary_mcode = (fun mc -> mc); + VT0.rebuilder_binary_mcode = (fun mc -> mc); + VT0.rebuilder_cv_mcode = (fun mc -> mc); + VT0.rebuilder_sign_mcode = (fun mc -> mc); + VT0.rebuilder_struct_mcode = (fun mc -> mc); + VT0.rebuilder_storage_mcode = (fun mc -> mc); + VT0.rebuilder_inc_mcode = (fun mc -> mc); + VT0.rebuilder_dotsexprfn = (fun r k e -> k e); + VT0.rebuilder_dotsinitfn = (fun r k e -> k e); + VT0.rebuilder_dotsparamfn = (fun r k e -> k e); + VT0.rebuilder_dotsstmtfn = (fun r k e -> k e); + VT0.rebuilder_dotsdeclfn = (fun r k e -> k e); + VT0.rebuilder_dotscasefn = (fun r k e -> k e); + VT0.rebuilder_identfn = (fun r k e -> k e); + VT0.rebuilder_exprfn = (fun r k e -> k e); + VT0.rebuilder_tyfn = (fun r k e -> k e); + VT0.rebuilder_initfn = (fun r k e -> k e); + VT0.rebuilder_paramfn = (fun r k e -> k e); + VT0.rebuilder_declfn = (fun r k e -> k e); + VT0.rebuilder_stmtfn = (fun r k e -> k e); + VT0.rebuilder_casefn = (fun r k e -> k e); + VT0.rebuilder_topfn = (fun r k e -> k e)} + +let rebuilder_dz r = + {VT0.rebuilder_rec_ident = + (function e -> let (_,e) = r.VT0.ident e in e); + VT0.rebuilder_rec_expression = + (function e -> let (_,e) = r.VT0.expression e in e); + VT0.rebuilder_rec_typeC = + (function e -> let (_,e) = r.VT0.typeC e in e); + VT0.rebuilder_rec_declaration = + (function e -> let (_,e) = r.VT0.declaration e in e); + VT0.rebuilder_rec_initialiser = + (function e -> let (_,e) = r.VT0.initialiser e in e); + VT0.rebuilder_rec_initialiser_list = + (function e -> let (_,e) = r.VT0.initialiser_list e in e); + VT0.rebuilder_rec_parameter = + (function e -> let (_,e) = r.VT0.parameter e in e); + VT0.rebuilder_rec_parameter_list = + (function e -> let (_,e) = r.VT0.parameter_list e in e); + VT0.rebuilder_rec_statement = + (function e -> let (_,e) = r.VT0.statement e in e); + VT0.rebuilder_rec_case_line = + (function e -> let (_,e) = r.VT0.case_line e in e); + VT0.rebuilder_rec_top_level = + (function e -> let (_,e) = r.VT0.top_level e in e); + VT0.rebuilder_rec_expression_dots = + (function e -> let (_,e) = r.VT0.expression_dots e in e); + VT0.rebuilder_rec_statement_dots = + (function e -> let (_,e) = r.VT0.statement_dots e in e); + VT0.rebuilder_rec_declaration_dots = + (function e -> let (_,e) = r.VT0.declaration_dots e in e); + VT0.rebuilder_rec_case_line_dots = + (function e -> let (_,e) = r.VT0.case_line_dots e in e); + VT0.rebuilder_rec_anything = + (function e -> let (_,e) = r.VT0.anything e in e)} + +let rebuilder functions = + let dz = rebuilder_dz in + let xk k e = let (_,e) = k e in e in + rebuilder_dz + (visitor REBUILDER (fun x y -> x) () + (function mc -> ((),functions.VT0.rebuilder_meta_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_string_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_const_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_assign_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_fix_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_unary_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_binary_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_cv_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_sign_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_struct_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_storage_mcode mc)) + (function mc -> ((),functions.VT0.rebuilder_inc_mcode mc)) + (fun r k e -> ((),functions.VT0.rebuilder_dotsexprfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_dotsinitfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_dotsparamfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_dotsstmtfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_dotsdeclfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_dotscasefn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_identfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_exprfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_tyfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_initfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_paramfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_declfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_stmtfn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_casefn (dz r) (xk k) e)) + (fun r k e -> ((),functions.VT0.rebuilder_topfn (dz r) (xk k) e))) + +let flat_rebuilder + meta_mcode string_mcode const_mcode assign_mcode fix_mcode unary_mcode + binary_mcode cv_mcode sign_mcode struct_mcode storage_mcode + inc_mcode + dotsexprfn dotsinitfn dotsparamfn dotsstmtfn dotsdeclfn dotscasefn + identfn exprfn tyfn initfn paramfn declfn stmtfn casefn topfn = + let dz = rebuilder_dz in + let xk k e = let (_,e) = k e in e in + rebuilder_dz + (visitor REBUILDER (fun x y -> x) () + (function mc -> ((),meta_mcode mc)) + (function mc -> ((),string_mcode mc)) + (function mc -> ((),const_mcode mc)) + (function mc -> ((),assign_mcode mc)) + (function mc -> ((),fix_mcode mc)) + (function mc -> ((),unary_mcode mc)) + (function mc -> ((),binary_mcode mc)) + (function mc -> ((),cv_mcode mc)) + (function mc -> ((),sign_mcode mc)) + (function mc -> ((),struct_mcode mc)) + (function mc -> ((),storage_mcode mc)) + (function mc -> ((),inc_mcode mc)) + (fun r k e -> ((),dotsexprfn (dz r) (xk k) e)) + (fun r k e -> ((),dotsinitfn (dz r) (xk k) e)) + (fun r k e -> ((),dotsparamfn (dz r) (xk k) e)) + (fun r k e -> ((),dotsstmtfn (dz r) (xk k) e)) + (fun r k e -> ((),dotsdeclfn (dz r) (xk k) e)) + (fun r k e -> ((),dotscasefn (dz r) (xk k) e)) + (fun r k e -> ((),identfn (dz r) (xk k) e)) + (fun r k e -> ((),exprfn (dz r) (xk k) e)) + (fun r k e -> ((),tyfn (dz r) (xk k) e)) + (fun r k e -> ((),initfn (dz r) (xk k) e)) + (fun r k e -> ((),paramfn (dz r) (xk k) e)) + (fun r k e -> ((),declfn (dz r) (xk k) e)) + (fun r k e -> ((),stmtfn (dz r) (xk k) e)) + (fun r k e -> ((),casefn (dz r) (xk k) e)) + (fun r k e -> ((),topfn (dz r) (xk k) e))) + +let combiner_rebuilder_functions = + {VT0.combiner_rebuilder_meta_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_string_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_const_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_assign_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_fix_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_unary_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_binary_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_cv_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_sign_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_struct_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_storage_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_inc_mcode = + (fun opt_default mc -> (opt_default,mc)); + VT0.combiner_rebuilder_dotsexprfn = (fun r k e -> k e); + VT0.combiner_rebuilder_dotsinitfn = (fun r k e -> k e); + VT0.combiner_rebuilder_dotsparamfn = (fun r k e -> k e); + VT0.combiner_rebuilder_dotsstmtfn = (fun r k e -> k e); + VT0.combiner_rebuilder_dotsdeclfn = (fun r k e -> k e); + VT0.combiner_rebuilder_dotscasefn = (fun r k e -> k e); + VT0.combiner_rebuilder_identfn = (fun r k e -> k e); + VT0.combiner_rebuilder_exprfn = (fun r k e -> k e); + VT0.combiner_rebuilder_tyfn = (fun r k e -> k e); + VT0.combiner_rebuilder_initfn = (fun r k e -> k e); + VT0.combiner_rebuilder_paramfn = (fun r k e -> k e); + VT0.combiner_rebuilder_declfn = (fun r k e -> k e); + VT0.combiner_rebuilder_stmtfn = (fun r k e -> k e); + VT0.combiner_rebuilder_casefn = (fun r k e -> k e); + VT0.combiner_rebuilder_topfn = (fun r k e -> k e)} + +let combiner_rebuilder bind option_default functions = + visitor BOTH bind option_default + (functions.VT0.combiner_rebuilder_meta_mcode option_default) + (functions.VT0.combiner_rebuilder_string_mcode option_default) + (functions.VT0.combiner_rebuilder_const_mcode option_default) + (functions.VT0.combiner_rebuilder_assign_mcode option_default) + (functions.VT0.combiner_rebuilder_fix_mcode option_default) + (functions.VT0.combiner_rebuilder_unary_mcode option_default) + (functions.VT0.combiner_rebuilder_binary_mcode option_default) + (functions.VT0.combiner_rebuilder_cv_mcode option_default) + (functions.VT0.combiner_rebuilder_sign_mcode option_default) + (functions.VT0.combiner_rebuilder_struct_mcode option_default) + (functions.VT0.combiner_rebuilder_storage_mcode option_default) + (functions.VT0.combiner_rebuilder_inc_mcode option_default) + functions.VT0.combiner_rebuilder_dotsexprfn + functions.VT0.combiner_rebuilder_dotsinitfn + functions.VT0.combiner_rebuilder_dotsparamfn + functions.VT0.combiner_rebuilder_dotsstmtfn + functions.VT0.combiner_rebuilder_dotsdeclfn + functions.VT0.combiner_rebuilder_dotscasefn + functions.VT0.combiner_rebuilder_identfn + functions.VT0.combiner_rebuilder_exprfn + functions.VT0.combiner_rebuilder_tyfn + functions.VT0.combiner_rebuilder_initfn + functions.VT0.combiner_rebuilder_paramfn + functions.VT0.combiner_rebuilder_declfn + functions.VT0.combiner_rebuilder_stmtfn + functions.VT0.combiner_rebuilder_casefn + functions.VT0.combiner_rebuilder_topfn diff --git a/parsing_cocci/visitor_ast0.mli b/parsing_cocci/visitor_ast0.mli dissimilarity index 98% index 285539f..14b8212 100644 --- a/parsing_cocci/visitor_ast0.mli +++ b/parsing_cocci/visitor_ast0.mli @@ -1,119 +1,78 @@ - -(* --------------------------------------------------------------------- *) - -type 'a combiner = - {combiner_ident : Ast0_cocci.ident -> 'a; - combiner_expression : Ast0_cocci.expression -> 'a; - combiner_typeC : Ast0_cocci.typeC -> 'a; - combiner_declaration : Ast0_cocci.declaration -> 'a; - combiner_initialiser : Ast0_cocci.initialiser -> 'a; - combiner_initialiser_list : Ast0_cocci.initialiser_list -> 'a; - combiner_parameter : Ast0_cocci.parameterTypeDef -> 'a; - combiner_parameter_list : Ast0_cocci.parameter_list -> 'a; - combiner_statement : Ast0_cocci.statement -> 'a; - combiner_case_line : Ast0_cocci.case_line -> 'a; - combiner_top_level : Ast0_cocci.top_level -> 'a; - combiner_expression_dots : - Ast0_cocci.expression Ast0_cocci.dots -> 'a; - combiner_statement_dots : - Ast0_cocci.statement Ast0_cocci.dots -> 'a; - combiner_declaration_dots : - Ast0_cocci.declaration Ast0_cocci.dots -> 'a; - combiner_case_line_dots : - Ast0_cocci.case_line Ast0_cocci.dots -> 'a; - combiner_anything : Ast0_cocci.anything -> 'a} - -type ('mc,'a) cmcode = 'mc Ast0_cocci.mcode -> 'a -type ('cd,'a) ccode = 'a combiner -> ('cd -> 'a) -> 'cd -> 'a - -val combiner : - ('a -> 'a -> 'a) -> 'a -> - ((string*string,'a) cmcode) -> - ((string,'a) cmcode) -> - ((Ast_cocci.constant,'a) cmcode) -> - ((Ast_cocci.assignOp,'a) cmcode) -> - ((Ast_cocci.fixOp,'a) cmcode) -> - ((Ast_cocci.unaryOp,'a) cmcode) -> - ((Ast_cocci.binaryOp,'a) cmcode) -> - ((Ast_cocci.const_vol,'a) cmcode) -> - ((Ast_cocci.sign,'a) cmcode) -> - ((Ast_cocci.structUnion,'a) cmcode) -> - ((Ast_cocci.storage,'a) cmcode) -> - ((Ast_cocci.inc_file,'a) cmcode) -> - ((Ast0_cocci.expression Ast0_cocci.dots,'a) ccode) -> - ((Ast0_cocci.initialiser Ast0_cocci.dots,'a) ccode) -> - ((Ast0_cocci.parameterTypeDef Ast0_cocci.dots,'a) ccode) -> - ((Ast0_cocci.statement Ast0_cocci.dots,'a) ccode) -> - ((Ast0_cocci.declaration Ast0_cocci.dots,'a) ccode) -> - ((Ast0_cocci.case_line Ast0_cocci.dots,'a) ccode) -> - ((Ast0_cocci.ident,'a) ccode) -> - ((Ast0_cocci.expression,'a) ccode) -> - ((Ast0_cocci.typeC,'a) ccode) -> - ((Ast0_cocci.initialiser,'a) ccode) -> - ((Ast0_cocci.parameterTypeDef,'a) ccode) -> - ((Ast0_cocci.declaration,'a) ccode) -> - ((Ast0_cocci.statement,'a) ccode) -> - ((Ast0_cocci.case_line,'a) ccode) -> - ((Ast0_cocci.top_level,'a) ccode) -> - 'a combiner - -type 'a inout = 'a -> 'a (* for specifying the type of rebuilder *) - -type rebuilder = - {rebuilder_ident : Ast0_cocci.ident inout; - rebuilder_expression : Ast0_cocci.expression inout; - rebuilder_typeC : Ast0_cocci.typeC inout; - rebuilder_declaration : Ast0_cocci.declaration inout; - rebuilder_initialiser : Ast0_cocci.initialiser inout; - rebuilder_initialiser_list : Ast0_cocci.initialiser_list inout; - rebuilder_parameter : Ast0_cocci.parameterTypeDef inout; - rebuilder_parameter_list : Ast0_cocci.parameter_list inout; - rebuilder_statement : Ast0_cocci.statement inout; - rebuilder_case_line : Ast0_cocci.case_line inout; - rebuilder_top_level : Ast0_cocci.top_level inout; - rebuilder_expression_dots : - Ast0_cocci.expression Ast0_cocci.dots -> - Ast0_cocci.expression Ast0_cocci.dots; - rebuilder_statement_dots : - Ast0_cocci.statement Ast0_cocci.dots -> - Ast0_cocci.statement Ast0_cocci.dots; - rebuilder_declaration_dots : - Ast0_cocci.declaration Ast0_cocci.dots -> - Ast0_cocci.declaration Ast0_cocci.dots; - rebuilder_case_line_dots : - Ast0_cocci.case_line Ast0_cocci.dots -> - Ast0_cocci.case_line Ast0_cocci.dots; - rebuilder_anything : Ast0_cocci.anything -> Ast0_cocci.anything} - -type 'mc rmcode = 'mc Ast0_cocci.mcode inout -type 'cd rcode = rebuilder -> ('cd inout) -> 'cd inout - -val rebuilder : - ((string*string) rmcode) -> - (string rmcode) -> - (Ast_cocci.constant rmcode) -> - (Ast_cocci.assignOp rmcode) -> - (Ast_cocci.fixOp rmcode) -> - (Ast_cocci.unaryOp rmcode) -> - (Ast_cocci.binaryOp rmcode) -> - (Ast_cocci.const_vol rmcode) -> - (Ast_cocci.sign rmcode) -> - (Ast_cocci.structUnion rmcode) -> - (Ast_cocci.storage rmcode) -> - (Ast_cocci.inc_file rmcode) -> - (Ast0_cocci.expression Ast0_cocci.dots rcode) -> - (Ast0_cocci.initialiser Ast0_cocci.dots rcode) -> - (Ast0_cocci.parameterTypeDef Ast0_cocci.dots rcode) -> - (Ast0_cocci.statement Ast0_cocci.dots rcode) -> - (Ast0_cocci.declaration Ast0_cocci.dots rcode) -> - (Ast0_cocci.case_line Ast0_cocci.dots rcode) -> - (Ast0_cocci.ident rcode) -> - (Ast0_cocci.expression rcode) -> - (Ast0_cocci.typeC rcode) -> - (Ast0_cocci.initialiser rcode) -> - (Ast0_cocci.parameterTypeDef rcode) -> - (Ast0_cocci.declaration rcode) -> - (Ast0_cocci.statement rcode) -> - (Ast0_cocci.case_line rcode) -> - (Ast0_cocci.top_level rcode) -> - rebuilder +val combiner_functions : 'a Visitor_ast0_types.combiner_functions +val combiner : + ('a -> 'a -> 'a) -> + 'a -> 'a Visitor_ast0_types.combiner_functions -> + 'a Visitor_ast0_types.combiner_rec_functions + +val flat_combiner : + ('a -> 'a -> 'a) -> 'a -> + ((string*string,'a) Visitor_ast0_types.flat_cmcode) -> + ((string,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.constant,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.assignOp,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.fixOp,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.unaryOp,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.binaryOp,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.const_vol,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.sign,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.structUnion,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.storage,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast_cocci.inc_file,'a) Visitor_ast0_types.flat_cmcode) -> + ((Ast0_cocci.expression Ast0_cocci.dots,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.initialiser Ast0_cocci.dots,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.parameterTypeDef Ast0_cocci.dots,'a) + Visitor_ast0_types.ccode) -> + ((Ast0_cocci.statement Ast0_cocci.dots,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.declaration Ast0_cocci.dots,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.case_line Ast0_cocci.dots,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.ident,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.expression,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.typeC,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.initialiser,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.parameterTypeDef,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.declaration,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.statement,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.case_line,'a) Visitor_ast0_types.ccode) -> + ((Ast0_cocci.top_level,'a) Visitor_ast0_types.ccode) -> + 'a Visitor_ast0_types.combiner_rec_functions + +val rebuilder_functions : Visitor_ast0_types.rebuilder_functions +val rebuilder : Visitor_ast0_types.rebuilder_functions -> + Visitor_ast0_types.rebuilder_rec_functions + +val flat_rebuilder : + ((string*string) Visitor_ast0_types.rmcode) -> + (string Visitor_ast0_types.rmcode) -> + (Ast_cocci.constant Visitor_ast0_types.rmcode) -> + (Ast_cocci.assignOp Visitor_ast0_types.rmcode) -> + (Ast_cocci.fixOp Visitor_ast0_types.rmcode) -> + (Ast_cocci.unaryOp Visitor_ast0_types.rmcode) -> + (Ast_cocci.binaryOp Visitor_ast0_types.rmcode) -> + (Ast_cocci.const_vol Visitor_ast0_types.rmcode) -> + (Ast_cocci.sign Visitor_ast0_types.rmcode) -> + (Ast_cocci.structUnion Visitor_ast0_types.rmcode) -> + (Ast_cocci.storage Visitor_ast0_types.rmcode) -> + (Ast_cocci.inc_file Visitor_ast0_types.rmcode) -> + (Ast0_cocci.expression Ast0_cocci.dots Visitor_ast0_types.rcode) -> + (Ast0_cocci.initialiser Ast0_cocci.dots Visitor_ast0_types.rcode) -> + (Ast0_cocci.parameterTypeDef Ast0_cocci.dots Visitor_ast0_types.rcode) -> + (Ast0_cocci.statement Ast0_cocci.dots Visitor_ast0_types.rcode) -> + (Ast0_cocci.declaration Ast0_cocci.dots Visitor_ast0_types.rcode) -> + (Ast0_cocci.case_line Ast0_cocci.dots Visitor_ast0_types.rcode) -> + (Ast0_cocci.ident Visitor_ast0_types.rcode) -> + (Ast0_cocci.expression Visitor_ast0_types.rcode) -> + (Ast0_cocci.typeC Visitor_ast0_types.rcode) -> + (Ast0_cocci.initialiser Visitor_ast0_types.rcode) -> + (Ast0_cocci.parameterTypeDef Visitor_ast0_types.rcode) -> + (Ast0_cocci.declaration Visitor_ast0_types.rcode) -> + (Ast0_cocci.statement Visitor_ast0_types.rcode) -> + (Ast0_cocci.case_line Visitor_ast0_types.rcode) -> + (Ast0_cocci.top_level Visitor_ast0_types.rcode) -> + Visitor_ast0_types.rebuilder_rec_functions + +val combiner_rebuilder_functions : + 'a Visitor_ast0_types.combiner_rebuilder_functions +val combiner_rebuilder : + ('a -> 'a -> 'a) -> 'a -> + 'a Visitor_ast0_types.combiner_rebuilder_functions -> + 'a Visitor_ast0_types.all_functions diff --git a/parsing_cocci/visitor_ast0_types.ml b/parsing_cocci/visitor_ast0_types.ml new file mode 100644 index 0000000..a679616 --- /dev/null +++ b/parsing_cocci/visitor_ast0_types.ml @@ -0,0 +1,181 @@ +module Ast0 = Ast0_cocci +module Ast = Ast_cocci + +type ('a,'n) inout = 'a -> ('n * 'a) + +type 'n all_functions = + {ident : (Ast0.ident,'n) inout; + expression : (Ast0.expression,'n) inout; + typeC : (Ast0.typeC,'n) inout; + declaration : (Ast0.declaration,'n) inout; + initialiser : (Ast0.initialiser,'n) inout; + initialiser_list : (Ast0.initialiser_list,'n) inout; + parameter : (Ast0.parameterTypeDef,'n) inout; + parameter_list : (Ast0.parameter_list,'n) inout; + statement : (Ast0.statement,'n) inout; + case_line : (Ast0.case_line,'n) inout; + top_level : (Ast0.top_level,'n) inout; + expression_dots : (Ast0.expression Ast0.dots,'n) inout; + statement_dots : (Ast0.statement Ast0.dots,'n) inout; + declaration_dots : (Ast0.declaration Ast0.dots,'n) inout; + case_line_dots : (Ast0.case_line Ast0.dots,'n) inout; + anything : (Ast0.anything,'n) inout} + +(* ----------------------------------------------------------------------- *) +(* combiner *) + +type ('a,'n) combiner_inout = 'a -> 'n + +type 'n combiner_rec_functions = + {combiner_rec_ident : (Ast0.ident,'n) combiner_inout; + combiner_rec_expression : (Ast0.expression,'n) combiner_inout; + combiner_rec_typeC : (Ast0.typeC,'n) combiner_inout; + combiner_rec_declaration : (Ast0.declaration,'n) combiner_inout; + combiner_rec_initialiser : (Ast0.initialiser,'n) combiner_inout; + combiner_rec_initialiser_list : + (Ast0.initialiser_list,'n) combiner_inout; + combiner_rec_parameter : (Ast0.parameterTypeDef,'n) combiner_inout; + combiner_rec_parameter_list : (Ast0.parameter_list,'n) combiner_inout; + combiner_rec_statement : (Ast0.statement,'n) combiner_inout; + combiner_rec_case_line : (Ast0.case_line,'n) combiner_inout; + combiner_rec_top_level : (Ast0.top_level,'n) combiner_inout; + combiner_rec_expression_dots : + (Ast0.expression Ast0.dots,'n) combiner_inout; + combiner_rec_statement_dots : + (Ast0.statement Ast0.dots,'n) combiner_inout; + combiner_rec_declaration_dots : + (Ast0.declaration Ast0.dots,'n) combiner_inout; + combiner_rec_case_line_dots : + (Ast0.case_line Ast0.dots,'n) combiner_inout; + combiner_rec_anything : (Ast0.anything,'n) combiner_inout} + +type ('mc,'n) cmcode = 'n -> 'mc Ast0.mcode -> 'n +type ('mc,'n) flat_cmcode = 'mc Ast0.mcode -> 'n +type ('cd,'n) ccode = 'n combiner_rec_functions -> ('cd -> 'n) -> 'cd -> 'n + +type 'n combiner_functions = + {combiner_meta_mcode : ((string*string),'n) cmcode; + combiner_string_mcode : (string,'n) cmcode; + combiner_const_mcode : (Ast.constant,'n) cmcode; + combiner_assign_mcode : (Ast.assignOp,'n) cmcode; + combiner_fix_mcode : (Ast.fixOp,'n) cmcode; + combiner_unary_mcode : (Ast.unaryOp,'n) cmcode; + combiner_binary_mcode : (Ast.binaryOp,'n) cmcode; + combiner_cv_mcode : (Ast.const_vol,'n) cmcode; + combiner_sign_mcode : (Ast.sign,'n) cmcode; + combiner_struct_mcode : (Ast.structUnion,'n) cmcode; + combiner_storage_mcode : (Ast.storage,'n) cmcode; + combiner_inc_mcode : (Ast.inc_file,'n) cmcode; + combiner_dotsexprfn : (Ast0.expression Ast0.dots,'n) ccode; + combiner_dotsinitfn : (Ast0.initialiser Ast0.dots,'n) ccode; + combiner_dotsparamfn : (Ast0.parameterTypeDef Ast0.dots,'n) ccode; + combiner_dotsstmtfn : (Ast0.statement Ast0.dots,'n) ccode; + combiner_dotsdeclfn : (Ast0.declaration Ast0.dots,'n) ccode; + combiner_dotscasefn : (Ast0.case_line Ast0.dots,'n) ccode; + combiner_identfn : (Ast0.ident,'n) ccode; + combiner_exprfn : (Ast0.expression,'n) ccode; + combiner_tyfn : (Ast0.typeC,'n) ccode; + combiner_initfn : (Ast0.initialiser,'n) ccode; + combiner_paramfn : (Ast0.parameterTypeDef,'n) ccode; + combiner_declfn : (Ast0.declaration,'n) ccode; + combiner_stmtfn : (Ast0.statement,'n) ccode; + combiner_casefn : (Ast0.case_line,'n) ccode; + combiner_topfn : (Ast0.top_level,'n) ccode} + +(* ----------------------------------------------------------------------- *) +(* rebuilder *) + +type 'a rebuilder_inout = 'a -> 'a + +type rebuilder_rec_functions = + {rebuilder_rec_ident : Ast0.ident rebuilder_inout; + rebuilder_rec_expression : Ast0.expression rebuilder_inout; + rebuilder_rec_typeC : Ast0.typeC rebuilder_inout; + rebuilder_rec_declaration : Ast0.declaration rebuilder_inout; + rebuilder_rec_initialiser : Ast0.initialiser rebuilder_inout; + rebuilder_rec_initialiser_list : + Ast0.initialiser_list rebuilder_inout; + rebuilder_rec_parameter : Ast0.parameterTypeDef rebuilder_inout; + rebuilder_rec_parameter_list : Ast0.parameter_list rebuilder_inout; + rebuilder_rec_statement : Ast0.statement rebuilder_inout; + rebuilder_rec_case_line : Ast0.case_line rebuilder_inout; + rebuilder_rec_top_level : Ast0.top_level rebuilder_inout; + rebuilder_rec_expression_dots : + Ast0.expression Ast0.dots rebuilder_inout; + rebuilder_rec_statement_dots : + Ast0.statement Ast0.dots rebuilder_inout; + rebuilder_rec_declaration_dots : + Ast0.declaration Ast0.dots rebuilder_inout; + rebuilder_rec_case_line_dots : + Ast0.case_line Ast0.dots rebuilder_inout; + rebuilder_rec_anything : Ast0.anything rebuilder_inout} + +type 'mc rmcode = 'mc Ast0.mcode rebuilder_inout +type 'cd rcode = + rebuilder_rec_functions -> ('cd rebuilder_inout) -> 'cd rebuilder_inout + +type rebuilder_functions = + {rebuilder_meta_mcode : (string*string) rmcode; + rebuilder_string_mcode : string rmcode; + rebuilder_const_mcode : Ast.constant rmcode; + rebuilder_assign_mcode : Ast.assignOp rmcode; + rebuilder_fix_mcode : Ast.fixOp rmcode; + rebuilder_unary_mcode : Ast.unaryOp rmcode; + rebuilder_binary_mcode : Ast.binaryOp rmcode; + rebuilder_cv_mcode : Ast.const_vol rmcode; + rebuilder_sign_mcode : Ast.sign rmcode; + rebuilder_struct_mcode : Ast.structUnion rmcode; + rebuilder_storage_mcode : Ast.storage rmcode; + rebuilder_inc_mcode : Ast.inc_file rmcode; + rebuilder_dotsexprfn : Ast0.expression Ast0.dots rcode; + rebuilder_dotsinitfn : Ast0.initialiser Ast0.dots rcode; + rebuilder_dotsparamfn : Ast0.parameterTypeDef Ast0.dots rcode; + rebuilder_dotsstmtfn : Ast0.statement Ast0.dots rcode; + rebuilder_dotsdeclfn : Ast0.declaration Ast0.dots rcode; + rebuilder_dotscasefn : Ast0.case_line Ast0.dots rcode; + rebuilder_identfn : Ast0.ident rcode; + rebuilder_exprfn : Ast0.expression rcode; + rebuilder_tyfn : Ast0.typeC rcode; + rebuilder_initfn : Ast0.initialiser rcode; + rebuilder_paramfn : Ast0.parameterTypeDef rcode; + rebuilder_declfn : Ast0.declaration rcode; + rebuilder_stmtfn : Ast0.statement rcode; + rebuilder_casefn : Ast0.case_line rcode; + rebuilder_topfn : Ast0.top_level rcode} + +(* ----------------------------------------------------------------------- *) +(* combiner_rebuilder *) + +type ('mc,'a) rcmcode = 'a -> 'mc Ast0.mcode -> ('a * 'mc Ast0.mcode) +type ('cd,'a) rccode = + 'a all_functions -> ('cd -> ('a * 'cd)) -> 'cd -> ('a * 'cd) + +type 'n combiner_rebuilder_functions = + {combiner_rebuilder_meta_mcode : ((string*string),'n) rcmcode; + combiner_rebuilder_string_mcode : (string,'n) rcmcode; + combiner_rebuilder_const_mcode : (Ast.constant,'n) rcmcode; + combiner_rebuilder_assign_mcode : (Ast.assignOp,'n) rcmcode; + combiner_rebuilder_fix_mcode : (Ast.fixOp,'n) rcmcode; + combiner_rebuilder_unary_mcode : (Ast.unaryOp,'n) rcmcode; + combiner_rebuilder_binary_mcode : (Ast.binaryOp,'n) rcmcode; + combiner_rebuilder_cv_mcode : (Ast.const_vol,'n) rcmcode; + combiner_rebuilder_sign_mcode : (Ast.sign,'n) rcmcode; + combiner_rebuilder_struct_mcode : (Ast.structUnion,'n) rcmcode; + combiner_rebuilder_storage_mcode : (Ast.storage,'n) rcmcode; + combiner_rebuilder_inc_mcode : (Ast.inc_file,'n) rcmcode; + combiner_rebuilder_dotsexprfn : (Ast0.expression Ast0.dots,'n) rccode; + combiner_rebuilder_dotsinitfn : (Ast0.initialiser Ast0.dots,'n) rccode; + combiner_rebuilder_dotsparamfn : + (Ast0.parameterTypeDef Ast0.dots,'n) rccode; + combiner_rebuilder_dotsstmtfn : (Ast0.statement Ast0.dots,'n) rccode; + combiner_rebuilder_dotsdeclfn : (Ast0.declaration Ast0.dots,'n) rccode; + combiner_rebuilder_dotscasefn : (Ast0.case_line Ast0.dots,'n) rccode; + combiner_rebuilder_identfn : (Ast0.ident,'n) rccode; + combiner_rebuilder_exprfn : (Ast0.expression,'n) rccode; + combiner_rebuilder_tyfn : (Ast0.typeC,'n) rccode; + combiner_rebuilder_initfn : (Ast0.initialiser,'n) rccode; + combiner_rebuilder_paramfn : (Ast0.parameterTypeDef,'n) rccode; + combiner_rebuilder_declfn : (Ast0.declaration,'n) rccode; + combiner_rebuilder_stmtfn : (Ast0.statement,'n) rccode; + combiner_rebuilder_casefn : (Ast0.case_line,'n) rccode; + combiner_rebuilder_topfn : (Ast0.top_level,'n) rccode} diff --git a/popl/Makefile b/popl/Makefile deleted file mode 100644 index e7968f3..0000000 --- a/popl/Makefile +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -# This file is part of Coccinelle. -# -# Coccinelle 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, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - -#note: if you add a file (a .mli or .ml), dont forget to do a make depend - --include ../Makefile.config - -TARGET = popl - -SRC = ast_popl.ml asttopopl.ml insert_quantifiers.ml insert_befaft.ml \ -pretty_print_popl.ml popltoctl.ml popl.ml flag_popl.ml - -SYSLIBS=str.cma unix.cma -LIBS=../commons/commons.cma ../globals/globals.cma - -INCLUDE_PATH = -I ../commons -I ../globals \ - -I ../ctl -I ../parsing_c -I ../parsing_cocci -I ../engine - -#The Caml compilers. -#for warning: -w A -#for profiling: -p -inline 0 with OCAMLOPT -CAMLC =ocamlc$(OPTBIN) -dtypes -g -CAMLOPT=ocamlopt$(OPTBIN) $(OPTFLAGS) -CAMLLEX = ocamllex$(OPTBIN) -CAMLYACC= ocamlyacc -CAMLDEP = ocamldep$(OPTBIN) -CAMLMKTOP=ocamlmktop -g -custom - - - -LIB=$(TARGET).cma -OPTLIB=$(LIB:.cma=.cmxa) - -OBJS = $(SRC:.ml=.cmo) -OPTOBJS = $(SRC:.ml=.cmx) - -all: $(LIB) -all.opt: $(OPTLIB) - -$(TARGET).top: $(LIB) - $(CAMLMKTOP) -o $(TARGET).top $(SYSLIBS) $(LIBS) $(OBJS) - -$(LIB): $(OBJS) - $(CAMLC) -a -o $(LIB) $(OBJS) - -clean:: - rm -f $(LIB) $(TARGET).top - - -$(OPTLIB): $(OPTOBJS) - $(CAMLOPT) -a -o $(OPTLIB) $(OPTOBJS) - -# clean rule for LIB.opt -clean:: - rm -f $(OPTLIB) $(LIB:.cma=.a) - - -.SUFFIXES: -.SUFFIXES: .ml .mli .cmo .cmi .cmx - -.ml.cmo: - $(CAMLC) $(INCLUDE_PATH) -c $< - -.mli.cmi: - $(CAMLC) $(INCLUDE_PATH) -c $< - -.ml.cmx: - $(CAMLOPT) $(INCLUDE_PATH) -c $< - - - - -# clean rule for others files -clean:: - rm -f *.cm[iox] *.o *.annot - rm -f *~ .*~ #*# - -depend: - $(CAMLDEP) $(INCLUDE_PATH) *.mli *.ml > .depend - -#clean:: -# rm -f .depend - -.depend: - $(CAMLDEP) $(INCLUDE_PATH) *.mli *.ml > .depend - --include .depend diff --git a/popl/ast_popl.ml b/popl/ast_popl.ml deleted file mode 100644 index 8a0e475..0000000 --- a/popl/ast_popl.ml +++ /dev/null @@ -1,38 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -type sequence = - Seq of element * sequence - | Empty - | SExists of Ast_cocci.meta_name * sequence - -and element = - Term of Ast_cocci.rule_elem - | Or of sequence * sequence - | DInfo of dots * element list (* before *) * element list (* after *) - | EExists of Ast_cocci.meta_name * element - -and dots = - Dots - | Nest of sequence - | When of dots * sequence - | DExists of Ast_cocci.meta_name * dots diff --git a/popl/asttopopl.ml b/popl/asttopopl.ml deleted file mode 100644 index 6f1d840..0000000 --- a/popl/asttopopl.ml +++ /dev/null @@ -1,74 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -module Ast = Ast_cocci -module Past = Ast_popl - -(* --------------------------------------------------------------------- *) - -let rec stm s = - match Ast.unwrap s with - Ast.Atomic(ast) -> - (match Ast.unwrap ast with - Ast.ExprStatement(_,_) -> Past.Term ast - | Ast.Exp(_) -> Past.Term ast - | Ast.Decl(_,_,_) -> Past.Term ast - | _ -> failwith "complex statements not supported") - | Ast.Disj(stm1::stm2::stmts) -> - List.fold_left - (function prev -> - function cur -> - Past.Or(Past.Seq(prev,Past.Empty),stm_list cur)) - (Past.Or(stm_list stm1,stm_list stm2)) stmts - | Ast.Dots(dots,whencodes,_,_) -> - (match whencodes with - [Ast.WhenNot(a)] -> Past.DInfo(Past.When(Past.Dots,stm_list a),[],[]) - | _ -> failwith "only one when != supported") - | Ast.Nest(stmt_dots,whencodes,false,_,_) -> - let nest = Past.Nest(stm_list stmt_dots) in - (match whencodes with - [Ast.WhenNot(a)] -> Past.DInfo(Past.When(nest,stm_list a),[],[]) - | _ -> failwith "only when != supported") - | Ast.While(header,body,(_,_,_,aft)) | Ast.For(header,body,(_,_,_,aft)) -> - (* only allowed if only the header is significant *) - (match (Ast.unwrap body,aft) with - (Ast.Atomic(re),Ast.CONTEXT(_,Ast.NOTHING)) -> - (match Ast.unwrap re with - Ast.MetaStmt(_,Type_cocci.Unitary,_,false) -> Past.Term header - | _ -> failwith "unsupported statement1") - | _ -> failwith "unsupported statement2") - | _ -> - Pretty_print_cocci.statement "" s; - failwith "unsupported statement3" - -and stm_list s = - match Ast.unwrap s with - Ast.DOTS(d) -> - List.fold_right - (function cur -> function rest -> Past.Seq(stm cur, rest)) - d Past.Empty - | _ -> failwith "only DOTS handled" - -let top s = - match Ast.unwrap s with - Ast.CODE(stmt_dots) -> stm_list stmt_dots - | _ -> failwith "only CODE handled" diff --git a/popl/asttopopl.mli b/popl/asttopopl.mli deleted file mode 100644 index 5d8e4b1..0000000 --- a/popl/asttopopl.mli +++ /dev/null @@ -1 +0,0 @@ -val top : Ast_cocci.top_level -> Ast_popl.sequence diff --git a/popl/insert_befaft.ml b/popl/insert_befaft.ml deleted file mode 100644 index c5294f2..0000000 --- a/popl/insert_befaft.ml +++ /dev/null @@ -1,113 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -module Past = Ast_popl - -(* --------------------------------------------------------------------- *) - -let rec get_before a = function - Past.Seq(elem,seq) -> - let (elem,ea) = get_before_element a elem in - let (seq,sla) = get_before ea seq in - (Past.Seq(elem,seq),sla) - | Past.Empty -> (Past.Empty,a) - | Past.SExists(var,seq) -> failwith "not possible" - -and get_before_element a = function - Past.Term(term) as s -> (s,[s]) - | Past.Or(seq1,seq2) -> - let (seq1,seq1a) = get_before a seq1 in - let (seq2,seq2a) = get_before a seq2 in - (Past.Or(seq1,seq2),Common.union_set seq1a seq2a) - | Past.DInfo(dots,_,seq_aft) -> - let dots = get_before_dots a dots in - (Past.DInfo(dots,a,seq_aft),a) - | Past.EExists(var,seq) -> failwith "not possible" - -and get_before_dots a = function - Past.Dots -> Past.Dots - | Past.Nest(seq) -> - let (seq,_) = get_before a seq in - Past.Nest(seq) - | Past.When(dots,seq) -> - let dots = get_before_dots a dots in - let (seq,_) = get_before [] seq in - Past.When(dots,seq) - | Past.DExists(var,dots) -> failwith "not possible" - -(* --------------------------------------------------------------------- *) - -let rec get_after a = function - Past.Seq(elem,seq) -> - let (seq,sla) = get_after a seq in - let (elem,ea) = get_after_element sla elem in - (Past.Seq(elem,seq),ea) - | Past.Empty -> (Past.Empty,a) - | Past.SExists(var,seq) -> failwith "not possible" - -and get_after_element a = function - Past.Term(term) as s -> (s,[s]) - | Past.Or(seq1,seq2) -> - let (seq1,seq1a) = get_after a seq1 in - let (seq2,seq2a) = get_after a seq2 in - (Past.Or(seq1,seq2),Common.union_set seq1a seq2a) - | Past.DInfo(dots,seq_bef,_) -> - let dots = get_after_dots a dots in - (Past.DInfo(dots,seq_bef,a),a) - | Past.EExists(var,seq) -> failwith "not possible" - -and get_after_dots a = function - Past.Dots -> Past.Dots - | Past.Nest(seq) -> - let (seq,_) = get_after (Common.union_set (get_first [] seq) a) seq in - Past.Nest(seq) - | Past.When(dots,seq) -> - let dots = get_after_dots a dots in - let (seq,_) = get_after [] seq in - Past.When(dots,seq) - | Past.DExists(var,dots) -> failwith "not possible" - -(* --------------------------------------------------------------------- *) -(* like get_after, but just returns the a component; doesn't modify the term *) - -and get_first a = function - Past.Seq(elem,seq) -> - let sla = get_first a seq in - let ea = get_first_element sla elem in - ea - | Past.Empty -> a - | Past.SExists(var,seq) -> failwith "not possible" - -and get_first_element a = function - Past.Term(term) as s -> [s] - | Past.Or(seq1,seq2) -> - Common.union_set (get_first a seq1) (get_first a seq2) - | Past.DInfo(dots,_,_) -> a - | Past.EExists(var,seq) -> failwith "not possible" - -(* --------------------------------------------------------------------- *) -(* Entry point *) - -let insert_befaft sl = - let (sl,_) = get_before [] sl in - let (sl,_) = get_after [] sl in - sl diff --git a/popl/insert_befaft.mli b/popl/insert_befaft.mli deleted file mode 100644 index eea1354..0000000 --- a/popl/insert_befaft.mli +++ /dev/null @@ -1 +0,0 @@ -val insert_befaft : Ast_popl.sequence -> Ast_popl.sequence diff --git a/popl/insert_quantifiers.ml b/popl/insert_quantifiers.ml deleted file mode 100644 index a982efa..0000000 --- a/popl/insert_quantifiers.ml +++ /dev/null @@ -1,95 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -module Ast = Ast_cocci -module Past = Ast_popl - -(* --------------------------------------------------------------------- *) - -let rec fvs_sequence = function - Past.Seq(elem,seq) -> - Common.union_set (fvs_element elem) (fvs_sequence seq) - | Past.Empty -> [] - | Past.SExists(var,seq) -> failwith "not possible" - -and fvs_element = function - Past.Term(term) -> Ast.get_fvs term - | Past.Or(seq1,seq2) -> - Common.union_set (fvs_sequence seq1) (fvs_sequence seq2) - | Past.DInfo(dots,seq_bef,seq_aft) -> - List.fold_left - (function prev -> - function cur -> - Common.union_set (fvs_element cur) prev) - (fvs_dots dots) seq_bef - | Past.EExists(var,seq) -> failwith "not possible" - -and fvs_dots = function - Past.Dots -> [] - | Past.Nest(seq) -> fvs_sequence seq - | Past.When(dots,seq) -> Common.union_set (fvs_dots dots) (fvs_sequence seq) - | Past.DExists(var,dots) -> failwith "not possible" - -(* --------------------------------------------------------------------- *) - -let rec quant_sequence bound = function - Past.Seq(elem,seq) -> - let fe = fvs_element elem in - let fs = fvs_sequence seq in - let inter = Common.inter_set fe fs in - let free = Common.minus_set inter bound in - let new_bound = free @ bound in - List.fold_right (function cur -> function rest -> Past.SExists(cur,rest)) - free (Past.Seq(quant_element new_bound elem, - quant_sequence new_bound seq)) - | Past.Empty -> Past.Empty - | Past.SExists(var,seq) -> failwith "not possible" - -and quant_element bound = function - Past.Term(term) as x -> - let free = Common.minus_set (fvs_element x) bound in - List.fold_right (function cur -> function rest -> Past.EExists(cur,rest)) - free x - | Past.Or(seq1,seq2) -> - Past.Or(quant_sequence bound seq1,quant_sequence bound seq2) - | Past.DInfo(dots,seq_bef,seq_aft) -> - Past.DInfo(quant_dots bound dots,seq_bef, - List.map (quant_element bound) seq_aft) - | Past.EExists(var,seq) -> failwith "not possible" - -and quant_dots bound = function - Past.Dots -> Past.Dots - | Past.Nest(seq) -> Past.Nest(quant_sequence bound seq) - | Past.When(dots,seq) -> - let fd = fvs_dots dots in - let fs = fvs_sequence seq in - let inter = Common.inter_set fd fs in - let free = Common.minus_set inter bound in - let new_bound = free @ bound in - List.fold_right (function cur -> function rest -> Past.DExists(cur,rest)) - free (Past.When(quant_dots new_bound dots, - quant_sequence new_bound seq)) - | Past.DExists(var,dots) -> failwith "not possible" - -(* --------------------------------------------------------------------- *) - -let insert_quantifiers x = quant_sequence [] x diff --git a/popl/insert_quantifiers.mli b/popl/insert_quantifiers.mli deleted file mode 100644 index b8eef27..0000000 --- a/popl/insert_quantifiers.mli +++ /dev/null @@ -1 +0,0 @@ -val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence diff --git a/popl/popl.ml b/popl/popl.ml deleted file mode 100644 index 4be03ce..0000000 --- a/popl/popl.ml +++ /dev/null @@ -1,39 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -let poplz (name,_,ast) = - match ast with - [ast] -> - let ast = Asttopopl.top ast in - let ba = Insert_befaft.insert_befaft ast in - let qt = Insert_quantifiers.insert_quantifiers ba in - [Popltoctl.toctl qt] - | _ -> failwith "only one rule allowed" - -let popl r = - match r with - Ast_cocci.CocciRule (a,b,c) -> poplz (a,b,c) - | _ -> [] diff --git a/popl/popl.mli b/popl/popl.mli deleted file mode 100644 index 4a7fd49..0000000 --- a/popl/popl.mli +++ /dev/null @@ -1,5 +0,0 @@ -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val popl : Ast_cocci.rule -> formula list diff --git a/popl/popltoctl.ml b/popl/popltoctl.ml deleted file mode 100644 index c3e02ba..0000000 --- a/popl/popltoctl.ml +++ /dev/null @@ -1,202 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -module Past = Ast_popl -module Ast = Ast_cocci -module V = Visitor_ast -module CTL = Ast_ctl - -(* --------------------------------------------------------------------- *) -(* result type *) - -type cocci_predicate = Lib_engine.predicate * Ast.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -(* --------------------------------------------------------------------- *) - -let contains_modif = - let bind x y = x or y in - let option_default = false in - let mcode r (_,_,kind,_) = - match kind with - Ast.MINUS(_,_) -> true - | Ast.PLUS -> failwith "not possible" - | Ast.CONTEXT(_,info) -> not (info = Ast.NOTHING) in - let do_nothing r k e = k e in - let rule_elem r k re = - let res = k re in - match Ast.unwrap re with - Ast.FunHeader(bef,_,fninfo,name,lp,params,rp) -> - bind (mcode r ((),(),bef,Ast.NoMetaPos)) res - | Ast.Decl(bef,_,decl) -> bind (mcode r ((),(),bef,Ast.NoMetaPos)) res - | _ -> res in - let recursor = - V.combiner bind option_default - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - mcode - do_nothing do_nothing do_nothing do_nothing - do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing - do_nothing rule_elem do_nothing do_nothing do_nothing do_nothing in - recursor.V.combiner_rule_elem - -let ctl_exists v x keep_wit = CTL.Exists(v,x,keep_wit) - -let predmaker guard term = - let pos = ("","_p") in - ctl_exists true pos - (if guard && contains_modif term - then - let v = ("","_v") in - ctl_exists true v - (CTL.Pred (Lib_engine.Match(term),CTL.Modif v)) - else CTL.Pred (Lib_engine.Match(term),CTL.Control)) - -(* --------------------------------------------------------------------- *) - -let is_true = function CTL.True -> true | _ -> false - -let is_false = function CTL.False -> true | _ -> false - -let ctl_true = CTL.True - -let ctl_false = CTL.False - -let ctl_and x y = - if is_true x then y - else if is_true y then x else CTL.And(CTL.STRICT,x,y) - -let ctl_or x y = - if is_false x then y - else if is_false y then x else CTL.Or(x,y) - -let ctl_seqor x y = CTL.SeqOr(x,y) - -let ctl_not x = CTL.Not(x) - -let ctl_ax x = - if is_true x then CTL.True - else CTL.AX(CTL.FORWARD,CTL.STRICT,x) - -let after = CTL.Pred(Lib_engine.After, CTL.Control) -let exit = CTL.Pred(Lib_engine.Exit, CTL.Control) -let truepred = CTL.Pred(Lib_engine.TrueBranch, CTL.Control) -let retpred = CTL.Pred(Lib_engine.Return, CTL.Control) - -let string2var x = ("",x) - -let labelctr = ref 0 -let get_label_ctr _ = - let cur = !labelctr in - labelctr := cur + 1; - string2var (Printf.sprintf "l%d" cur) - -let ctl_au x seq_after y = - let lv = get_label_ctr() in - let labelpred = CTL.Pred(Lib_engine.Label lv,CTL.Control) in - let preflabelpred = CTL.Pred(Lib_engine.PrefixLabel lv,CTL.Control) in - let matchgoto = CTL.Pred(Lib_engine.Goto,CTL.Control) in - let matchbreak = - predmaker false - (Ast.make_term - (Ast.Break(Ast.make_mcode "break",Ast.make_mcode ";"))) in - let matchcontinue = - predmaker false - (Ast.make_term - (Ast.Continue(Ast.make_mcode "continue",Ast.make_mcode ";"))) in - let stop_early = - ctl_or after - (ctl_and (ctl_and truepred labelpred) - (CTL.AU - (CTL.FORWARD,CTL.STRICT,preflabelpred, - ctl_and preflabelpred - (ctl_or retpred - (ctl_and (ctl_or (ctl_or matchgoto matchbreak) matchcontinue) - (CTL.AG - (CTL.FORWARD,CTL.STRICT, - ctl_not seq_after))))))) in - CTL.AU(CTL.FORWARD,CTL.STRICT,x,ctl_or y stop_early) - -let ctl_uncheck x = CTL.Uncheck(x) - -(* --------------------------------------------------------------------- *) - -let rec ctl_seq keep_wit a = function - Past.Seq(elem,seq) -> - ctl_element keep_wit (ctl_seq keep_wit a seq) elem - | Past.Empty -> a - | Past.SExists(var,seq) -> ctl_exists keep_wit var (ctl_seq keep_wit a seq) - -and ctl_element keep_wit a = function - Past.Term(term) -> ctl_and (predmaker keep_wit term) (ctl_ax a) - | Past.Or(seq1,seq2) -> - ctl_seqor (ctl_seq keep_wit a seq1) (ctl_seq keep_wit a seq2) - | Past.DInfo(dots,seq_bef,seq_aft) -> - let shortest l = - List.fold_left ctl_or ctl_false - (List.map (ctl_element false ctl_true) l) in - let s = shortest (Common.union_set seq_bef seq_aft) in - ctl_au (ctl_and (guard_ctl_dots keep_wit dots) (ctl_not s)) - (shortest seq_aft) a - | Past.EExists(var,elem) -> - ctl_exists keep_wit var (ctl_element keep_wit a elem) - -(* --------------------------------------------------------------------- *) - -and guard_ctl_seq keep_wit = function - Past.Seq(elem,Past.Empty) -> guard_ctl_element keep_wit elem - | Past.Seq(elem,seq) -> - ctl_element keep_wit (guard_ctl_seq keep_wit seq) elem - | Past.Empty -> ctl_true - | Past.SExists(var,seq) -> - ctl_exists keep_wit var (guard_ctl_seq keep_wit seq) - -and guard_ctl_element keep_wit = function - Past.Term(term) -> predmaker keep_wit term - | Past.Or(seq1,seq2) -> - ctl_seqor (guard_ctl_seq keep_wit seq1) (guard_ctl_seq keep_wit seq2) - | Past.DInfo(dots,seq_bef,seq_aft) -> - let shortest l = - List.fold_left ctl_or ctl_false - (List.map (ctl_element false ctl_true) l) in - let s = shortest (Common.union_set seq_bef seq_aft) in - let aft = ctl_or s exit in - ctl_au (ctl_and (guard_ctl_dots keep_wit dots) (ctl_not s)) - (shortest seq_aft) aft - | Past.EExists(var,elem) -> - ctl_exists keep_wit var (guard_ctl_element keep_wit elem) - -and guard_ctl_dots keep_wit = function - Past.Dots -> ctl_true - | Past.Nest(_) when not keep_wit -> ctl_true - | Past.Nest(seq) -> - ctl_or (guard_ctl_seq true seq) (ctl_not (guard_ctl_seq false seq)) - | Past.When(dots,seq) -> - ctl_and - (guard_ctl_dots keep_wit dots) - (ctl_not (ctl_seq false ctl_true seq)) - | Past.DExists(var,dots) -> - ctl_exists keep_wit var (guard_ctl_dots keep_wit dots) - -(* --------------------------------------------------------------------- *) - -let toctl sl = ctl_seq true ctl_true sl diff --git a/popl/popltoctl.mli b/popl/popltoctl.mli deleted file mode 100644 index b1285d1..0000000 --- a/popl/popltoctl.mli +++ /dev/null @@ -1,5 +0,0 @@ -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val toctl : Ast_popl.sequence -> formula diff --git a/popl/pretty_print_popl.ml b/popl/pretty_print_popl.ml deleted file mode 100644 index 9ea7f1e..0000000 --- a/popl/pretty_print_popl.ml +++ /dev/null @@ -1,76 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -open Format -module Past = Ast_popl - -let start_block str = - force_newline(); print_string " "; open_box 0 - -let end_block str = - close_box(); force_newline () - -(* --------------------------------------------------------------------- *) - -let rec print_sequence = function - Past.Seq(e,seq) -> print_element e; force_newline(); print_sequence seq - | Past.Empty -> () - | Past.SExists((_,v),seq) -> print_string "exists "; print_string v; - print_string " ."; force_newline(); print_sequence seq - -and print_element = function - Past.Term(term) -> Pretty_print_cocci.rule_elem "" term - | Past.Or(seq1,seq2) -> - force_newline(); print_string "("; force_newline(); print_sequence seq1; - print_string "|"; force_newline(); print_sequence seq2; print_string ")" - | Past.DInfo(dots,bef,aft) -> - start_block(); - List.iter - (function b -> print_string ">>>"; print_element b; force_newline()) - bef; - print_dots dots; - List.iter - (function b -> force_newline(); print_string "<<<"; print_element b) - aft; - end_block() - | Past.EExists((_,v),elem) -> print_string "exists "; print_string v; - print_string " ."; force_newline(); print_element elem - -and print_dots = function - Past.Dots -> print_string "..." - | Past.Nest(seq)-> print_string "<..."; start_block(); print_sequence seq; - end_block(); print_string "...>" - | Past.When(dots,seq) -> print_dots dots; print_string " when != "; - open_box 0; print_sequence seq; close_box() - | Past.DExists((_,v),dots) -> print_string "exists "; print_string v; - print_string " ."; force_newline(); print_dots dots - -(* --------------------------------------------------------------------- *) - -let pretty_print_e e = - print_element e; - print_newline() - -let pretty_print sl = - print_sequence sl; - print_newline() - diff --git a/popl/pretty_print_popl.mli b/popl/pretty_print_popl.mli deleted file mode 100644 index 5b3399a..0000000 --- a/popl/pretty_print_popl.mli +++ /dev/null @@ -1,2 +0,0 @@ -val pretty_print : Ast_popl.sequence -> unit -val pretty_print_e : Ast_popl.element -> unit diff --git a/popl09/.depend b/popl09/.depend deleted file mode 100644 index 687e676..0000000 --- a/popl09/.depend +++ /dev/null @@ -1,33 +0,0 @@ -asttopopl.cmi: ast_popl.cmo ../parsing_cocci/ast_cocci.cmi -insert_quantifiers.cmi: ast_popl.cmo -popl.cmi: ../ctl/wrapper_ctl.cmi ../engine/lib_engine.cmo ../ctl/ast_ctl.cmo \ - ../parsing_cocci/ast_cocci.cmi -popltoctl.cmi: ../ctl/wrapper_ctl.cmi ../engine/lib_engine.cmo ast_popl.cmo \ - ../ctl/ast_ctl.cmo ../parsing_cocci/ast_cocci.cmi -pretty_print_popl.cmi: ast_popl.cmo -ast_popl.cmo: ../parsing_cocci/ast_cocci.cmi -ast_popl.cmx: ../parsing_cocci/ast_cocci.cmx -asttopopl.cmo: ../parsing_cocci/pretty_print_cocci.cmi ast_popl.cmo \ - ../parsing_cocci/ast_cocci.cmi asttopopl.cmi -asttopopl.cmx: ../parsing_cocci/pretty_print_cocci.cmx ast_popl.cmx \ - ../parsing_cocci/ast_cocci.cmx asttopopl.cmi -insert_quantifiers.cmo: ../commons/common.cmi ast_popl.cmo \ - ../parsing_cocci/ast_cocci.cmi insert_quantifiers.cmi -insert_quantifiers.cmx: ../commons/common.cmx ast_popl.cmx \ - ../parsing_cocci/ast_cocci.cmx insert_quantifiers.cmi -popl.cmo: ../ctl/wrapper_ctl.cmi popltoctl.cmi ../engine/lib_engine.cmo \ - insert_quantifiers.cmi asttopopl.cmi ../ctl/ast_ctl.cmo \ - ../parsing_cocci/ast_cocci.cmi popl.cmi -popl.cmx: ../ctl/wrapper_ctl.cmx popltoctl.cmx ../engine/lib_engine.cmx \ - insert_quantifiers.cmx asttopopl.cmx ../ctl/ast_ctl.cmx \ - ../parsing_cocci/ast_cocci.cmx popl.cmi -popltoctl.cmo: ../ctl/wrapper_ctl.cmi ../parsing_cocci/visitor_ast.cmi \ - ../engine/lib_engine.cmo flag_popl.cmo ast_popl.cmo ../ctl/ast_ctl.cmo \ - ../parsing_cocci/ast_cocci.cmi popltoctl.cmi -popltoctl.cmx: ../ctl/wrapper_ctl.cmx ../parsing_cocci/visitor_ast.cmx \ - ../engine/lib_engine.cmx flag_popl.cmx ast_popl.cmx ../ctl/ast_ctl.cmx \ - ../parsing_cocci/ast_cocci.cmx popltoctl.cmi -pretty_print_popl.cmo: ../parsing_cocci/pretty_print_cocci.cmi ast_popl.cmo \ - ../parsing_cocci/ast_cocci.cmi pretty_print_popl.cmi -pretty_print_popl.cmx: ../parsing_cocci/pretty_print_cocci.cmx ast_popl.cmx \ - ../parsing_cocci/ast_cocci.cmx pretty_print_popl.cmi diff --git a/popl09/Makefile b/popl09/Makefile deleted file mode 100644 index 21bd4ae..0000000 --- a/popl09/Makefile +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -# This file is part of Coccinelle. -# -# Coccinelle 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, according to version 2 of the License. -# -# Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -# -# The authors reserve the right to distribute this or future versions of -# Coccinelle under other licenses. - - -#note: if you add a file (a .mli or .ml), dont forget to do a make depend - --include ../Makefile.config -TARGET = popl - -SRC = ast_popl.ml asttopopl.ml insert_quantifiers.ml \ -pretty_print_popl.ml flag_popl.ml popltoctl.ml popl.ml - -SYSLIBS=str.cma unix.cma -LIBS=../commons/commons.cma ../globals/globals.cma - -INCLUDES = -I ../commons -I ../globals \ - -I ../ctl -I ../parsing_cocci -I ../parsing_c -I ../engine - -#The Caml compilers. -#for warning: -w A -#for profiling: -p -inline 0 with OCAMLOPT -OCAMLCFLAGS ?= -g -dtypes -OCAMLC =ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES) -OCAMLOPT = ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES) -OCAMLDEP = ocamldep$(OPTBIN) $(INCLUDES) -OCAMLMKTOP=ocamlmktop -g -custom - - - -LIB=$(TARGET).cma -OPTLIB=$(LIB:.cma=.cmxa) - -OBJS = $(SRC:.ml=.cmo) -OPTOBJS = $(SRC:.ml=.cmx) - -all: $(LIB) -all.opt: $(OPTLIB) - -$(TARGET).top: $(LIB) - $(OCAMLMKTOP) -o $(TARGET).top $(SYSLIBS) $(LIBS) $(OBJS) - -$(LIB): $(OBJS) - $(OCAMLC) -a -o $(LIB) $(OBJS) - -clean:: - rm -f $(LIB) $(TARGET).top - - -$(OPTLIB): $(OPTOBJS) - $(OCAMLOPT) -a -o $(OPTLIB) $(OPTOBJS) - -# clean rule for LIB.opt -clean:: - rm -f $(OPTLIB) $(LIB:.cma=.a) - - -.SUFFIXES: -.SUFFIXES: .ml .mli .cmo .cmi .cmx - -.ml.cmo: - $(OCAMLC) -c $< - -.mli.cmi: - $(OCAMLC) -c $< - -.ml.cmx: - $(OCAMLOPT) -c $< - - - - -# clean rule for others files -clean:: - rm -f *.cm[iox] *.o *.annot - rm -f *~ .*~ #*# - -depend: - $(OCAMLDEP) *.mli *.ml > .depend - -#clean:: -# rm -f .depend - -.depend: - $(OCAMLDEP) $(INCLUDE_PATH) *.mli *.ml > .depend - --include .depend diff --git a/popl09/ast_popl.ml b/popl09/ast_popl.ml deleted file mode 100644 index 64c2ec9..0000000 --- a/popl09/ast_popl.ml +++ /dev/null @@ -1,48 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -type sequence = - Seq of element * sequence - | Empty - | SExists of Ast_cocci.meta_name * sequence - -and term = - Atomic of Ast_cocci.rule_elem - | IfThen of term * term * Ast_cocci.end_info - | TExists of Ast_cocci.meta_name * term - -and element = - Term of term * dots_bef_aft - | Or of sequence * sequence - | DInfo of dots - | EExists of Ast_cocci.meta_name * element - -and dots = - Dots - | Nest of sequence - | When of dots * sequence - -and dots_bef_aft = - NoDots - | AddingBetweenDots of term * int (*index of let var*) - | DroppingBetweenDots of term * int (*index of let var*) - diff --git a/popl09/asttopopl.ml b/popl09/asttopopl.ml deleted file mode 100644 index e256ceb..0000000 --- a/popl09/asttopopl.ml +++ /dev/null @@ -1,98 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -module Ast = Ast_cocci -module Past = Ast_popl - -(* --------------------------------------------------------------------- *) - -let term s inif = - let fail _ = - Pretty_print_cocci.statement "" s; - Format.print_newline(); - failwith "complex statements not supported" in - match Ast.unwrap s with - Ast.Atomic(ast) -> - (match Ast.unwrap ast with - Ast.ExprStatement(_,_) -> Past.Atomic ast - | Ast.Exp(_) -> Past.Atomic ast - | Ast.Decl(_,_,_) -> Past.Atomic ast - | Ast.ReturnExpr(_,_,_) -> Past.Atomic ast - | Ast.MetaStmt(_,_,_,_) when inif -> Past.Atomic ast - | Ast.DisjRuleElem(_) -> Past.Atomic ast - | _ -> fail()) - | _ -> fail() - -let rec stm s = - match Ast.unwrap s with - Ast.Atomic(ast) -> Past.Term(term s false,dots_bef_aft s false) - | Ast.IfThen(header,body,aft) -> - Past.Term( - Past.IfThen(Past.Atomic header,term body true,aft), - dots_bef_aft s true) - | Ast.Disj(stm1::stm2::stmts) -> - List.fold_left - (function prev -> - function cur -> - Past.Or(Past.Seq(prev,Past.Empty),stm_list cur)) - (Past.Or(stm_list stm1,stm_list stm2)) stmts - | Ast.Dots(dots,whencodes,_,_) -> - Past.DInfo - (List.fold_left - (function prev -> - function - Ast.WhenNot(a) -> Past.When(prev,stm_list a) - | _ -> failwith "only when != supported") - Past.Dots whencodes) - | Ast.Nest(stmt_dots,whencodes,false,_,_) -> - let nest = Past.Nest(stm_list stmt_dots) in - Past.DInfo - (List.fold_left - (function prev -> - function - Ast.WhenNot(a) -> Past.When(prev,stm_list a) - | _ -> failwith "only when != supported") - nest whencodes) - | _ -> - Pretty_print_cocci.statement "" s; - failwith "unsupported statement3" - -and dots_bef_aft s inif = - match Ast.get_dots_bef_aft s with - Ast.AddingBetweenDots (brace_term,n) -> - Past.AddingBetweenDots (term brace_term inif,n) - | Ast.DroppingBetweenDots (brace_term,n) -> - Past.DroppingBetweenDots (term brace_term inif,n) - | Ast.NoDots -> Past.NoDots - -and stm_list s = - match Ast.unwrap s with - Ast.DOTS(d) -> - List.fold_right - (function cur -> function rest -> Past.Seq(stm cur, rest)) - d Past.Empty - | _ -> failwith "only DOTS handled" - -let top s = - match Ast.unwrap s with - Ast.CODE(stmt_dots) -> stm_list stmt_dots - | _ -> failwith "only CODE handled" diff --git a/popl09/asttopopl.mli b/popl09/asttopopl.mli deleted file mode 100644 index 5d8e4b1..0000000 --- a/popl09/asttopopl.mli +++ /dev/null @@ -1 +0,0 @@ -val top : Ast_cocci.top_level -> Ast_popl.sequence diff --git a/popl09/flag_popl.ml b/popl09/flag_popl.ml deleted file mode 100644 index 20b79f1..0000000 --- a/popl09/flag_popl.ml +++ /dev/null @@ -1,24 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -let mark_all = ref false -let keep_all_wits = ref false diff --git a/popl09/insert_quantifiers.ml b/popl09/insert_quantifiers.ml deleted file mode 100644 index a257fba..0000000 --- a/popl09/insert_quantifiers.ml +++ /dev/null @@ -1,113 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -module Ast = Ast_cocci -module Past = Ast_popl - -(* --------------------------------------------------------------------- *) - -let rec fvs_sequence = function - Past.Seq(elem,seq) -> - Common.union_set (fvs_element elem) (fvs_sequence seq) - | Past.Empty -> [] - | Past.SExists(var,seq) -> failwith "not possible" - -and fvs_term = function - Past.Atomic(term) -> Ast.get_fvs term - | Past.IfThen(test,thn,(afvs,_,_,_)) -> - Common.union_set afvs - (Common.union_set (fvs_term test) (fvs_term thn)) - | Past.TExists(var,term) -> failwith "not possible" - -and fvs_element = function - Past.Term(term,_) -> fvs_term term - | Past.Or(seq1,seq2) -> - Common.union_set (fvs_sequence seq1) (fvs_sequence seq2) - | Past.DInfo(dots) -> fvs_dots dots - | Past.EExists(var,seq) -> failwith "not possible" - -and fvs_dots = function - Past.Dots -> [] - | Past.Nest(seq) -> fvs_sequence seq - | Past.When(dots,seq) -> Common.union_set (fvs_dots dots) (fvs_sequence seq) - -(* --------------------------------------------------------------------- *) - -let inter_set l1 l2 = List.filter (function l1e -> List.mem l1e l2) l1 - -let minus_set l1 l2 = List.filter (function l1e -> not (List.mem l1e l2)) l1 - -let rec quant_sequence bound = function - Past.Seq(elem,seq) -> - let fe = fvs_element elem in - let fs = fvs_sequence seq in - let inter = inter_set fe fs in - let free = minus_set inter bound in - let new_bound = free @ bound in - List.fold_right (function cur -> function rest -> Past.SExists(cur,rest)) - free (Past.Seq(quant_element new_bound elem, - quant_sequence new_bound seq)) - | Past.Empty -> Past.Empty - | Past.SExists(var,seq) -> failwith "not possible" - -and quant_term bound = function - (Past.Atomic(term)) as x -> - let free = minus_set (Ast.get_fvs term) bound in - List.fold_right (function cur -> function rest -> Past.TExists(cur,rest)) - free x - | Past.IfThen(test,thn,((afvs,_,_,_) as aft)) -> - let fts = fvs_term test in - let fth = fvs_term thn in - let inter = inter_set fts fth in - let free = minus_set inter bound in - let new_bound = free @ bound in - List.fold_right (function cur -> function rest -> Past.TExists(cur,rest)) - free (Past.IfThen(quant_term new_bound test, - quant_term new_bound thn, - aft)) - | Past.TExists(var,term) -> failwith "not possible" - -and quant_element bound = function - Past.Term(term,ba) -> - Past.Term(quant_term bound term,dots_bef_aft bound ba) - | Past.Or(seq1,seq2) -> - Past.Or(quant_sequence bound seq1,quant_sequence bound seq2) - | Past.DInfo(dots) -> - Past.DInfo(quant_dots bound dots) - | Past.EExists(var,seq) -> failwith "not possible" - -and dots_bef_aft bound = function - Past.AddingBetweenDots (brace_term,n) -> - Past.AddingBetweenDots (quant_term bound brace_term,n) - | Past.DroppingBetweenDots (brace_term,n) -> - Past.DroppingBetweenDots (quant_term bound brace_term,n) - | Past.NoDots -> Past.NoDots - -and quant_dots bound = function - Past.Dots -> Past.Dots - | Past.Nest(seq) -> Past.Nest(quant_sequence bound seq) - | Past.When(dots,seq) -> - Past.When(quant_dots bound dots, quant_sequence bound seq) - -(* --------------------------------------------------------------------- *) - -let insert_quantifiers x = quant_sequence [] x diff --git a/popl09/insert_quantifiers.mli b/popl09/insert_quantifiers.mli deleted file mode 100644 index b8eef27..0000000 --- a/popl09/insert_quantifiers.mli +++ /dev/null @@ -1 +0,0 @@ -val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence diff --git a/popl09/popl.ml b/popl09/popl.ml deleted file mode 100644 index 92ea56d..0000000 --- a/popl09/popl.ml +++ /dev/null @@ -1,38 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -let poplz (name,_,ast) = - match ast with - [ast] -> - let ast = Asttopopl.top ast in - let qt = Insert_quantifiers.insert_quantifiers ast in - [Popltoctl.toctl qt] - | _ -> failwith "only one rule allowed" - -let popl r = - match r with - Ast_cocci.CocciRule(a,b,c,_,Ast_cocci.Normal) -> poplz (a,b,c) - | _ -> [] diff --git a/popl09/popl.mli b/popl09/popl.mli deleted file mode 100644 index 4a7fd49..0000000 --- a/popl09/popl.mli +++ /dev/null @@ -1,5 +0,0 @@ -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val popl : Ast_cocci.rule -> formula list diff --git a/popl09/popltoctl.ml b/popl09/popltoctl.ml deleted file mode 100644 index f98f199..0000000 --- a/popl09/popltoctl.ml +++ /dev/null @@ -1,237 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -module Past = Ast_popl -module Ast = Ast_cocci -module V = Visitor_ast -module CTL = Ast_ctl - -(* --------------------------------------------------------------------- *) -(* result type *) - -type cocci_predicate = Lib_engine.predicate * Ast.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -(* --------------------------------------------------------------------- *) - -let contains_modif = - let bind x y = x or y in - let option_default = false in - let mcode r (_,_,kind,_) = - match kind with - Ast.MINUS(_,_) -> true - | Ast.PLUS -> failwith "not possible" - | Ast.CONTEXT(_,info) -> not (info = Ast.NOTHING) in - let do_nothing r k e = k e in - let rule_elem r k re = - let res = k re in - match Ast.unwrap re with - Ast.FunHeader(bef,_,fninfo,name,lp,params,rp) -> - bind (mcode r ((),(),bef,Ast.NoMetaPos)) res - | Ast.Decl(bef,_,decl) -> bind (mcode r ((),(),bef,Ast.NoMetaPos)) res - | _ -> res in - let recursor = - V.combiner bind option_default - mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode - do_nothing do_nothing do_nothing do_nothing - do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing - do_nothing rule_elem do_nothing do_nothing do_nothing do_nothing in - recursor.V.combiner_rule_elem - -let ctl_exists keep_wit v x = - CTL.Exists(!Flag_popl.keep_all_wits or keep_wit,v,x) - -let predmaker keep_wit term = - if (!Flag_popl.keep_all_wits or keep_wit) && - (!Flag_popl.mark_all or contains_modif term) - then - let v = ("","_v") in - ctl_exists true v - (CTL.Pred (Lib_engine.Match(term),CTL.Modif v)) - else CTL.Pred (Lib_engine.Match(term),CTL.Control) - -(* --------------------------------------------------------------------- *) - -let is_true = function CTL.True -> true | _ -> false - -let is_false = function CTL.False -> true | _ -> false - -let ctl_true = CTL.True - -let ctl_false = CTL.False - -let ctl_and x y = - if is_true x then y - else if is_true y then x else CTL.And(CTL.STRICT,x,y) - -let ctl_or x y = - if is_false x then y - else if is_false y then x else CTL.Or(x,y) - -let ctl_seqor x y = CTL.SeqOr(x,y) - -let ctl_not x = CTL.Not(x) - -let ctl_ax x = - if is_true x then CTL.True - else CTL.AX(CTL.FORWARD,CTL.STRICT,x) - -let ctl_ex x = - if is_true x then CTL.True - else CTL.EX(CTL.FORWARD,x) - -let ctl_back_ex x = - if is_true x then CTL.True - else CTL.EX(CTL.BACKWARD,x) - -let after = CTL.Pred(Lib_engine.After, CTL.Control) -let fall = CTL.Pred(Lib_engine.FallThrough, CTL.Control) -let exit = CTL.Pred(Lib_engine.Exit, CTL.Control) -let truepred = CTL.Pred(Lib_engine.TrueBranch, CTL.Control) -let falsepred = CTL.Pred(Lib_engine.FalseBranch, CTL.Control) -let retpred = CTL.Pred(Lib_engine.Return, CTL.Control) - -let string2var x = ("",x) - -let labelctr = ref 0 -let get_label_ctr _ = - let cur = !labelctr in - labelctr := cur + 1; - string2var (Printf.sprintf "l%d" cur) - -let ctl_au x y = CTL.AU(CTL.FORWARD,CTL.STRICT,x,y) - -let ctl_uncheck x = CTL.Uncheck(x) - -let make_meta_rule_elem d = - let nm = "_S" in - Ast.make_meta_rule_elem nm d ([],[],[]) - -(* --------------------------------------------------------------------- *) - -let rec ctl_seq keep_wit a = function - Past.Seq(elem,seq) -> - ctl_element keep_wit (ctl_seq keep_wit a seq) elem - | Past.Empty -> a - | Past.SExists(var,seq) -> ctl_exists keep_wit var (ctl_seq keep_wit a seq) - -and ctl_term keep_wit a = function - Past.Atomic(term) -> ctl_and (predmaker keep_wit term) (ctl_ax a) - | Past.IfThen(test,thn,(_,_,_,aft)) -> ifthen keep_wit (Some a) test thn aft - | Past.TExists(var,term) -> - ctl_exists keep_wit var (ctl_term keep_wit a term) - -and ctl_element keep_wit a = function - Past.Term(term,ba) -> - do_between_dots keep_wit ba (ctl_term keep_wit a term) a - | Past.Or(seq1,seq2) -> - ctl_seqor (ctl_seq keep_wit a seq1) (ctl_seq keep_wit a seq2) - | Past.DInfo(dots) -> ctl_au (guard_ctl_dots keep_wit a dots) a - | Past.EExists(var,elem) -> - ctl_exists keep_wit var (ctl_element keep_wit a elem) - -(* --------------------------------------------------------------------- *) - -and guard_ctl_seq keep_wit a = function - Past.Seq(elem,Past.Empty) -> guard_ctl_element keep_wit a elem - | Past.Seq(elem,seq) -> - ctl_element keep_wit (guard_ctl_seq keep_wit a seq) elem - | Past.Empty -> ctl_true - | Past.SExists(var,seq) -> - ctl_exists keep_wit var (guard_ctl_seq keep_wit a seq) - -and guard_ctl_term keep_wit = function - Past.Atomic(term) -> predmaker keep_wit term - | Past.IfThen(test,thn,(_,_,_,aft)) -> ifthen keep_wit None test thn aft - | Past.TExists(var,term) -> - ctl_exists keep_wit var (guard_ctl_term keep_wit term) - -and guard_ctl_element keep_wit a = function - Past.Term(term,_) -> guard_ctl_term keep_wit term - | Past.Or(seq1,seq2) -> - ctl_seqor - (guard_ctl_seq keep_wit a seq1) (guard_ctl_seq keep_wit a seq2) - | Past.DInfo(dots) -> ctl_au (guard_ctl_dots keep_wit a dots) a - | Past.EExists(var,elem) -> - ctl_exists keep_wit var (guard_ctl_element keep_wit a elem) - -and guard_ctl_dots keep_wit a = function - Past.Dots -> ctl_true -(* | Past.Nest(_) when not keep_wit -> ctl_true - a possible optimization, but irrelevant to popl example *) - | Past.Nest(seq) -> - ctl_or - (guard_ctl_seq true a seq) - (ctl_not (guard_ctl_seq false a seq)) - | Past.When(dots,seq) -> - ctl_and - (guard_ctl_dots keep_wit a dots) - (ctl_not (guard_ctl_seq false a seq)) - -(* --------------------------------------------------------------------- *) - -and ifthen keep_wit a test thn aft = -(* "if (test) thn; after" becomes: - if(test) & AX((TrueBranch & AX thn) v FallThrough v (After & AXAX after)) - & EX After - (* doesn't work for C code if (x) return 1; else return 2; *) -*) - let end_code = - match (aft,a) with - (Ast.CONTEXT(_,Ast.NOTHING),None) -> ctl_true - | (Ast.CONTEXT(_,Ast.NOTHING),Some a) -> ctl_ax (ctl_ax a) - | (_,None) -> failwith "not possible" - | (_,Some a) -> - ctl_ax - (ctl_and - (predmaker keep_wit (make_meta_rule_elem aft)) - (ctl_ax a)) in - let body = - ctl_or - (ctl_and truepred - (ctl_ax - (guard_ctl_term keep_wit thn))) - (ctl_or fall - (ctl_and after end_code)) in - ctl_and (ctl_term keep_wit body test) - (match a with Some CTL.True | None -> ctl_true | Some _ -> ctl_ex after) - -and do_between_dots keep_wit ba term after = - match ba with - Past.AddingBetweenDots (brace_term,n) - | Past.DroppingBetweenDots (brace_term,n) -> - (* not sure at all what to do here for after... *) - let match_brace = ctl_term keep_wit after brace_term in - let v = Printf.sprintf "_r_%d" n in - let case1 = ctl_and (CTL.Ref v) match_brace in - let case2 = ctl_and (ctl_not (CTL.Ref v)) term in - CTL.Let - (v,ctl_or - (ctl_back_ex truepred) - (ctl_back_ex (ctl_back_ex falsepred)), - ctl_or case1 case2) - | Past.NoDots -> term - -(* --------------------------------------------------------------------- *) - -let toctl sl = ctl_seq true ctl_true sl diff --git a/popl09/popltoctl.mli b/popl09/popltoctl.mli deleted file mode 100644 index b1285d1..0000000 --- a/popl09/popltoctl.mli +++ /dev/null @@ -1,5 +0,0 @@ -type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif -type formula = - (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl - -val toctl : Ast_popl.sequence -> formula diff --git a/popl09/pretty_print_popl.ml b/popl09/pretty_print_popl.ml deleted file mode 100644 index 86ca8fe..0000000 --- a/popl09/pretty_print_popl.ml +++ /dev/null @@ -1,97 +0,0 @@ -(* -* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen -* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller -* This file is part of Coccinelle. -* -* Coccinelle 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, according to version 2 of the License. -* -* Coccinelle is distributed in the hope that 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 Coccinelle. If not, see . -* -* The authors reserve the right to distribute this or future versions of -* Coccinelle under other licenses. -*) - - -open Format -module Past = Ast_popl -module Ast = Ast_cocci - -let start_block str = - force_newline(); print_string " "; open_box 0 - -let end_block str = - close_box(); force_newline () - -(* --------------------------------------------------------------------- *) - -let print_around printer term = function - Ast.NOTHING -> printer term - | Ast.BEFORE(bef) -> - Pretty_print_cocci.print_anything "<<< " bef; printer term - | Ast.AFTER(aft) -> - printer term; Pretty_print_cocci.print_anything ">>> " aft - | Ast.BEFOREAFTER(bef,aft) -> - Pretty_print_cocci.print_anything "<<< " bef; printer term; - Pretty_print_cocci.print_anything ">>> " aft - -let mcode fn = function - (x, _, Ast.MINUS(_,plus_stream), pos) -> - print_string "-"; fn x; - Pretty_print_cocci.print_anything ">>> " plus_stream - | (x, _, Ast.CONTEXT(_,plus_streams), pos) -> - print_around fn x plus_streams - | (x, info, Ast.PLUS, pos) -> fn x - -(* --------------------------------------------------------------------- *) - -let rec print_sequence = function - Past.Seq(e,seq) -> print_element e; force_newline(); print_sequence seq - | Past.Empty -> () - | Past.SExists((_,v),seq) -> print_string "exists "; print_string v; - print_string " ."; force_newline(); print_sequence seq - -and print_term = function - Past.Atomic(term) -> Pretty_print_cocci.rule_elem "" term - | Past.IfThen(test,thn,(_,_,_,aft)) -> - print_term test; print_term thn; - mcode (function _ -> ()) ((),Ast.no_info,aft,Ast.NoMetaPos) - | Past.TExists((_,v),term) -> print_string "exists "; print_string v; - print_string " ."; force_newline(); print_term term - -and print_element = function - Past.Term(term,_) -> print_term term - | Past.Or(seq1,seq2) -> - force_newline(); print_string "("; force_newline(); print_sequence seq1; - print_string "|"; force_newline(); print_sequence seq2; print_string ")" - | Past.DInfo(dots) -> - start_block(); - print_dots dots; - end_block() - | Past.EExists((_,v),elem) -> print_string "exists "; print_string v; - print_string " ."; force_newline(); print_element elem - -and print_dots = function - Past.Dots -> print_string "..." - | Past.Nest(seq)-> print_string "<..."; start_block(); print_sequence seq; - end_block(); print_string "...>" - | Past.When(dots,seq) -> print_dots dots; print_string " when != "; - open_box 0; print_sequence seq; close_box() - -(* --------------------------------------------------------------------- *) - -let pretty_print_e e = - print_element e; - print_newline() - -let pretty_print sl = - print_sequence sl; - print_newline() - diff --git a/popl09/pretty_print_popl.mli b/popl09/pretty_print_popl.mli deleted file mode 100644 index 5b3399a..0000000 --- a/popl09/pretty_print_popl.mli +++ /dev/null @@ -1,2 +0,0 @@ -val pretty_print : Ast_popl.sequence -> unit -val pretty_print_e : Ast_popl.element -> unit diff --git a/pycaml/Makefile b/pycaml/Makefile index 58f217a..aa0a21b 100644 --- a/pycaml/Makefile +++ b/pycaml/Makefile @@ -23,9 +23,11 @@ pycaml.customtop: byte-code-library cp -f dllpycaml_stubs.so ../ ocamlmktop -o pycaml.customtop pycaml.cma -clean:: +clean:: rm -f pycaml.customtop +distclean:: clean + depend: # added by julia, undoubtedly wrong -include $(OCAMLMAKEFILE) diff --git a/python/.depend b/python/.depend index f6f1ff2..e807966 100644 --- a/python/.depend +++ b/python/.depend @@ -1,18 +1,12 @@ -no_pycocci.cmo: pycocci_aux.cmo ../commons/common.cmi ../parsing_c/ast_c.cmo -no_pycocci.cmx: pycocci_aux.cmx ../commons/common.cmx ../parsing_c/ast_c.cmx +no_pycocci.cmo: ../commons/common.cmi ../parsing_c/ast_c.cmo +no_pycocci.cmx: ../commons/common.cmx ../parsing_c/ast_c.cmx no_pycocci_aux.cmo: ../parsing_c/pretty_print_c.cmi ../commons/common.cmi \ ../parsing_c/ast_c.cmo no_pycocci_aux.cmx: ../parsing_c/pretty_print_c.cmx ../commons/common.cmx \ ../parsing_c/ast_c.cmx -pycocci.cmo: pycocci_aux.cmo ../commons/common.cmi ../parsing_c/ast_c.cmo -pycocci.cmx: pycocci_aux.cmx ../commons/common.cmx ../parsing_c/ast_c.cmx -pycocci_aux.cmo: ../parsing_c/pretty_print_c.cmi ../commons/common.cmi \ - ../parsing_c/ast_c.cmo -pycocci_aux.cmx: ../parsing_c/pretty_print_c.cmx ../commons/common.cmx \ - ../parsing_c/ast_c.cmx -yes_pycocci.cmo: pycocci_aux.cmo ../pycaml/pycaml.cmo ../globals/flag.cmo \ +yes_pycocci.cmo: ../pycaml/pycaml.cmo ../globals/flag.cmo \ ../commons/common.cmi ../parsing_c/ast_c.cmo -yes_pycocci.cmx: pycocci_aux.cmx ../pycaml/pycaml.cmx ../globals/flag.cmx \ +yes_pycocci.cmx: ../pycaml/pycaml.cmx ../globals/flag.cmx \ ../commons/common.cmx ../parsing_c/ast_c.cmx yes_pycocci_aux.cmo: ../pycaml/pycaml.cmo ../parsing_c/pretty_print_c.cmi \ ../commons/common.cmi ../parsing_cocci/ast_cocci.cmi \ diff --git a/python/Makefile b/python/Makefile index 9f16961..16a9407 100644 --- a/python/Makefile +++ b/python/Makefile @@ -28,17 +28,17 @@ ############################################################################## TARGET=coccipython -SOURCES= pycocci_aux.ml pycocci.ml +SOURCES= pycocci_aux.ml pycocci.ml INCLUDEDIRS = ../commons ../commons/ocamlextra ../globals ../pycaml \ ../parsing_c ../parsing_cocci SYSLIBS = str.cma unix.cma -LIBS=../commons/commons.cma ../globals/globals.cma +LIBS=../commons/commons.cma ../globals/globals.cma # ../ctl/ctl.cma \ -# ../parsing_c/c_parser.cma ../parsing_cocci/cocci_parser.cma -#pycaml/pycaml.cma +# ../parsing_c/c_parser.cma ../parsing_cocci/cocci_parser.cma +#pycaml/pycaml.cma ############################################################################## @@ -90,7 +90,7 @@ clean:: rm -f $(LIB) -$(OPTLIB): $(OPTOBJS) +$(OPTLIB): $(OPTOBJS) $(OCAMLOPT) -a -o $(OPTLIB) $(OPTOBJS) @@ -102,13 +102,15 @@ $(CTLEXEC): $(CTLOBJS) $(LIBS) clean:: - rm -f $(OPTLIB) $(LIB:.cma=.a) + rm -f $(OPTLIB) $(LIB:.cma=.a) rm -f $(TARGET) rm -f $(TARGET).byte rm -f $(CTLTARGET) #pycocci.ml: ../pycaml/pycaml.ml ../pycaml/pycaml_ml.c #pycocci_aux.ml: ../pycaml/pycaml.ml ../pycaml/pycaml_ml.c +pycocci_aux.ml: + @echo "\n\n\t*** pycocci_aux.ml not found ! ***\n\n\tRun 'configure && make depend' first.\n\n" rmlinks: rm -f pycocci.ml pycocci_aux.ml @@ -133,14 +135,17 @@ rmlinks: # clean rule for others files clean:: rm -f *.cm[iox] *.o *.annot - rm -f *~ .*~ #*# + rm -f *~ .*~ #*# + +distclean:: + rm -f .depend beforedepend: depend: beforedepend $(OCAMLDEP) *.mli *.ml > .depend -.depend: +.depend: $(OCAMLDEP) *.mli *.ml > .depend -include .depend diff --git a/python/coccilib/Makefile b/python/coccilib/Makefile index 0170db2..9520e41 100644 --- a/python/coccilib/Makefile +++ b/python/coccilib/Makefile @@ -6,5 +6,5 @@ all.opt: depend: clean: - set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i clean; done + set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i clean; done rm -f *.pyc diff --git a/python/coccilib/output.py b/python/coccilib/output.py deleted file mode 120000 index 9b9e839..0000000 --- a/python/coccilib/output.py +++ /dev/null @@ -1 +0,0 @@ -output_base.py \ No newline at end of file diff --git a/python/coccilib/output_base.py b/python/coccilib/output_base.py index 65f0473..0f0a6f0 100644 --- a/python/coccilib/output_base.py +++ b/python/coccilib/output_base.py @@ -1,7 +1,3 @@ -import pygtk -import gtk, gobject -import coccilib.coccigui -import coccilib.coccigui.coccigui from threading import Thread, Lock import time from copy import deepcopy diff --git a/python/coccilib/output_gui.py b/python/coccilib/output_gui.py new file mode 100644 index 0000000..65f0473 --- /dev/null +++ b/python/coccilib/output_gui.py @@ -0,0 +1,125 @@ +import pygtk +import gtk, gobject +import coccilib.coccigui +import coccilib.coccigui.coccigui +from threading import Thread, Lock +import time +from copy import deepcopy + +class Output: + """In order to implement an output class for use with Coccinelle, + one can inherit from this class and overload register_match with + the same number of arguments. + + include_match will be overwritten by inheriting from your actual + class, and thus if your class is a.b.C then Coccinelle will create + a Python class "class Coccinelle(a.b.C)" that hooks include_match + into the O'Caml internals. + """ + def include_match(self, b): + pass + + def register_match(self, include, messages): + pass + + def combine(self, meta_variable, locations): + nmv = deepcopy(meta_variable) + nloc = [deepcopy(loc) for loc in locations] + nmv.location = nloc[0] + nmv.locations = nloc + + return nmv + + def finalise(self): + pass + + def print_main(self, msg, p) : + print "* TODO [[view:%s::face=ovl-face1::linb=%s::colb=%s::cole=%s][%s %s::%s]]" % (p[0].file,p[0].line,p[0].column,p[0].column_end,msg,p[0].file,p[0].line) + + def print_sec(self, msg, p) : + print "[[view:%s::face=ovl-face2::linb=%s::colb=%s::cole=%s][%s]]" % (p[0].file,p[0].line,p[0].column,p[0].column_end,msg) + + def print_secs(self, msg, ps) : + for i in ps: + print "[[view:%s::face=ovl-face2::linb=%s::colb=%s::cole=%s][%s]]" % (i.file,i.line,i.column,i.column_end,msg) + +class Console(Output): + def __init__(self): + pass + + def register_match(self, include, messages): + self.include_match(include) + if include: + for variable, message in messages: + print "%s:%s:%s: %s - %s" % (variable.location.file, variable.location.line, variable.location.column, message, variable) + +class GtkRunner(Thread): + def __init__(self): + Thread.__init__(self) + self.lock = Lock() + self.rows = [] + + def add_row(self, cocci, l): + for i in xrange(0, len(l)): + l[i] = (l[i][1], l[i][0].location.file, l[i][0].location.line, l[i][0].location.column) + + self.lock.acquire() + try: + self.rows.append((cocci, l)) + finally: + self.lock.release() + + def has_row(self): + self.lock.acquire() + try: + return len(self.rows) > 0 + finally: + self.lock.release() + + def get_row(self): + self.lock.acquire() + try: + return self.rows.pop(0) + finally: + self.lock.release() + + def update(self): + while self.has_row(): + cocci, l = self.get_row() + self.gui.add_result(cocci, l) + gobject.timeout_add(1000, self.update) + + def run(self): + self.gui = coccilib.coccigui.coccigui.pycocci() + globals()['gtk_sock'] = self.gui + gobject.timeout_add(1000, self.update) + + gtk.gdk.threads_init() + gtk.gdk.threads_enter() + + gtk.main() + + gtk.gdk.threads_leave() + + globals().pop('gtk_thread') + globals().pop('gtk_sock') + +class Gtk(Output): + def check_availability(self): + if not globals().has_key('gtk_sock'): + t = GtkRunner() + globals()['gtk_thread'] = t + globals()['gtk_thread'].start() + time.sleep(2) + + def register_match(self, include, messages): + self.check_availability() + + self.include_match(include) + if include: + globals()['gtk_thread'].add_row(self.cocci_file, messages) + + def finalise(self): + self.check_availability() + + globals()['gtk_thread'].join() diff --git a/python/no_pycocci_aux.ml b/python/no_pycocci_aux.ml index b8efc7c..262b089 100644 --- a/python/no_pycocci_aux.ml +++ b/python/no_pycocci_aux.ml @@ -24,7 +24,7 @@ open Ast_c open Common let rec exprrep expr = match expr with - Ast_c.Ident s -> s + Ast_c.Ident (ident) -> Ast_c.str_of_name ident | Ast_c.Constant c -> constantrep c | Ast_c.FunCall (e,args) -> "TODO: FunCall" | Ast_c.CondExpr (e1,e2,e3) -> "TODO: CondExpr" diff --git a/python/pycocci.ml b/python/pycocci.ml deleted file mode 120000 index 2f2a8da..0000000 --- a/python/pycocci.ml +++ /dev/null @@ -1 +0,0 @@ -no_pycocci.ml \ No newline at end of file diff --git a/python/pycocci_aux.ml b/python/pycocci_aux.ml deleted file mode 120000 index 003ba79..0000000 --- a/python/pycocci_aux.ml +++ /dev/null @@ -1 +0,0 @@ -no_pycocci_aux.ml \ No newline at end of file diff --git a/python/yes_pycocci.ml b/python/yes_pycocci.ml index bb877d5..2ef2807 100644 --- a/python/yes_pycocci.ml +++ b/python/yes_pycocci.ml @@ -29,12 +29,12 @@ module StringMap = Map.Make (String) exception Pycocciexception let check_return_value v = - if v = (pynull ()) then + if v =*= (pynull ()) then (pyerr_print (); raise Pycocciexception) else () let check_int_return_value v = - if v = -1 then + if v =|= -1 then (pyerr_print (); raise Pycocciexception) else () @@ -142,7 +142,7 @@ let has_environment_binding env name = let (rule, name) = (Array.get a 1, Array.get a 2) in let orule = pystring_asstring rule in let oname = pystring_asstring name in - let e = List.exists (function (x,y) -> orule = x && oname = y) env in + let e = List.exists (function (x,y) -> orule =$= x && oname =$= y) env in if e then pytrue () else pyfalse () let pyoutputinstance = ref (pynone ()) @@ -175,13 +175,13 @@ let build_variable name value = let contains_binding e (_,(r,m)) = try - let _ = List.find (function ((re, rm), _) -> r = re && m = rm) e in true + let _ = List.find (function ((re, rm), _) -> r =$= re && m =$= rm) e in true with Not_found -> false let construct_variables mv e = let find_binding (r,m) = try - let elem = List.find (function ((re,rm),_) -> r = re && m = rm) e in + let elem = List.find (function ((re,rm),_) -> r =$= re && m =$= rm) e in Some elem with Not_found -> None in diff --git a/readme.txt b/readme.txt index 9d24034..bcc2b2d 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,10 @@ style-preserving source-to-source transformations on C source code, like for instance to perform some refactorings. To install Coccinelle from its source, see the instructions in install.txt. -For more information on Coccinelle see the files in the docs/ directory. +For more information on Coccinelle, type 'make docs' and see look at the +files in the docs/ directory. You may need to install the texlive-fonts-extra +packages from your distribution to compile some of the LaTeX documentation +files. Once you have installed Coccinelle (either from the source or from one of the binary form available on the Coccinelle website), You may have diff --git a/scripts/spatch.sh b/scripts/spatch.sh index dd53353..05dc0ab 100644 --- a/scripts/spatch.sh +++ b/scripts/spatch.sh @@ -9,9 +9,9 @@ if [ ! -r "$COCCINELLE_HOME"/standard.iso ] ; then else export COCCINELLE_HOME - export LD_LIBRARY_PATH="$COCCINELLE_HOME:$LD_LIBRARY_PATH" + export LD_LIBRARY_PATH="LIBDIR:$LD_LIBRARY_PATH" export PYTHONPATH="$COCCINELLE_HOME/python:$PYTHONPATH" - + # echo setting LD_LIBRARY_PATH="$LD_LIBRARY_PATH" # echo setting PYTHONPATH="$PYTHONPATH" diff --git a/standard.h b/standard.h index 854f414..ff30864 100644 --- a/standard.h +++ b/standard.h @@ -13,6 +13,7 @@ * but where we cant detect that it will be a "bad macro" * - macros found in .c; macros correctly parsed * but where we cant detect that it will be a "bad macro" + * - hints, cf below. * * Some of those macros could be deleted and the C code rewritten because * they are "bad" macros. @@ -25,13 +26,33 @@ * handled builtin apparently by gcc. */ +// **************************************************************************** +// Hints +// **************************************************************************** + +/* Cooperation with parsing_hack.ml: some body of macros in this file, such + * as MACROSTATEMENT, are considered as magic strings. + * I can't just expand those macros into some 'whatever();' because I need + * to generate a TMacroStmt for solving some ambiguities in the grammar + * for the toplevel stuff I think. + * Right now a set of special strings are used as "hints" to the parser + * to help it parse code. Those hints are specified in parsing_hack.ml: + * + * - YACFE_ITERATOR + * - YACFE_DECLARATOR + * - YACFE_STRING + * - YACFE_STATEMENT, or MACROSTATEMENT + * - YACFE_ATTRIBUTE + * - YACFE_IDENT_BUILDER + */ + // **************************************************************************** // Test macros // **************************************************************************** // #define FOO(a, OP, b) a OP b // #define FOO(a,b) fn(a,b) - +#define FOO_METH_TEST(a) YACFE_IDENT_BUILDER // **************************************************************************** // Generic macros @@ -587,10 +608,6 @@ do { \ -// Cooperation with parsing_hack.ml: MACROSTATEMENT is a magic string. -// I can't just expand those macros into some 'whatever();' because I need -// to generate a TMacroStmt for solving some ambiguities in the grammar -// for the toplevel stuff I think. #define ASSERT(x) MACROSTATEMENT #define IRDA_ASSERT(x) MACROSTATEMENT diff --git a/testing.ml b/testing.ml index 31abbe3..8dffbb7 100644 --- a/testing.ml +++ b/testing.ml @@ -41,7 +41,9 @@ let testone x compare_with_expected_flag = let expected_res = "tests/" ^ x ^ ".res" in begin - let res = Cocci.full_engine (cocci_file, !Config.std_iso) [cfile] in + let cocci_infos = Cocci.pre_engine (cocci_file, !Config.std_iso) in + let res = Cocci.full_engine cocci_infos [cfile] in + Cocci.post_engine cocci_infos; let generated = match Common.optionise (fun () -> List.assoc cfile res) with | Some (Some outfile) -> @@ -68,7 +70,7 @@ let testone x compare_with_expected_flag = (* ------------------------------------------------------------------------ *) let testall () = - let newscore = empty_score () in + let score = empty_score () in let expected_result_files = Common.glob "tests/*.res" @@ -79,8 +81,8 @@ let testall () = begin expected_result_files +> List.iter (fun res -> - let x = if res =~ "\\(.*\\).res" then matched1 res else raise Impossible - in + let x = + if res =~ "\\(.*\\).res" then matched1 res else raise Impossible in let base = if x =~ "\\(.*\\)_ver[0-9]+" then matched1 x else x in let cfile = "tests/" ^ x ^ ".c" in let cocci_file = "tests/" ^ base ^ ".cocci" in @@ -90,8 +92,11 @@ let testall () = try ( Common.timeout_function timeout_testall (fun () -> - - let xs = Cocci.full_engine (cocci_file, !Config.std_iso) [cfile] in + + let cocci_infos = Cocci.pre_engine (cocci_file, !Config.std_iso) in + let xs = Cocci.full_engine cocci_infos [cfile] in + Cocci.post_engine cocci_infos; + let generated = match List.assoc cfile xs with | Some generated -> generated @@ -106,7 +111,7 @@ let testall () = * I want to indent a little more the messages. *) (match correct with - | Compare_c.Correct -> Hashtbl.add newscore res Common.Ok; + | Compare_c.Correct -> Hashtbl.add score res Common.Ok; | Compare_c.Pb s -> let s = Str.global_replace (Str.regexp "\"/tmp/cocci-output.*\"") "" s @@ -116,20 +121,20 @@ let testall () = " diff (result(<) vs expected_result(>)) = \n" ^ (diffxs +> List.map(fun s -> " "^s^"\n") +> Common.join "") in - Hashtbl.add newscore res (Common.Pb s) + Hashtbl.add score res (Common.Pb s) | Compare_c.PbOnlyInNotParsedCorrectly s -> let s = "seems incorrect, but only because of code that " ^ "was not parsable" ^ s in - Hashtbl.add newscore res (Common.Pb s) + Hashtbl.add score res (Common.Pb s) ) ) ) with exn -> Common.reset_pr_indent(); let s = "PROBLEM\n" ^ (" exn = " ^ Printexc.to_string exn ^ "\n") in - Hashtbl.add newscore res (Common.Pb s) + Hashtbl.add score res (Common.Pb s) ); @@ -137,7 +142,7 @@ let testall () = pr2 "statistics"; pr2 "--------------------------------"; - Common.hash_to_list newscore +> List.iter (fun (s, v) -> + Common.hash_to_list score +> List.iter (fun (s, v) -> pr_no_nl (Printf.sprintf "%-30s: " s); pr_no_nl ( match v with @@ -150,20 +155,63 @@ let testall () = pr2 "--------------------------------"; pr2 "regression testing information"; pr2 "--------------------------------"; - Common.regression_testing newscore - (Filename.concat Config.path "tests/score_cocci_best.marshalled"); - - pr2 "--------------------------------"; - pr2 "total score"; - pr2 "--------------------------------"; - let total = Common.hash_to_list newscore +> List.length in - let good = Common.hash_to_list newscore +> List.filter - (fun (s, v) -> v = Ok) +> List.length - in + let expected_score_file = "tests/SCORE_expected.sexp" in + let best_of_both_file = "tests/SCORE_best_of_both.sexp" in + let actual_score_file = "tests/SCORE_actual.sexp" in - pr2 (sprintf "good = %d/%d" good total); + pr2 ("regression file: "^ expected_score_file); + let (expected_score : score) = + if Sys.file_exists expected_score_file + then + let sexp = Sexp.load_sexp expected_score_file in + Sexp_common.score_of_sexp sexp + else empty_score() + in + let new_bestscore = Common.regression_testing_vs score expected_score in + + + let xs = Common.hash_to_list score in + let sexp = Sexp_common.sexp_of_score_list xs in + let s_score = Sexp.to_string_hum sexp in + Common.write_file ~file:(actual_score_file) s_score; + + let xs2 = Common.hash_to_list new_bestscore in + let sexp2 = Sexp_common.sexp_of_score_list xs2 in + let s_score2 = Sexp.to_string_hum sexp2 in + Common.write_file ~file:(best_of_both_file) s_score2; + + Common.print_total_score score; + + let (good, total) = Common.total_scores score in + let (expected_good, expected_total) = Common.total_scores expected_score in + + if good = expected_good + then begin + pr2 "Current score is equal to expected score; everything is fine"; + raise (UnixExit 0); + end + else + if good < expected_good + then begin + pr2 "Current score is lower than expected, :("; + pr2 ""; + pr2 "If you think it's normal, then maybe you need to update the"; + pr2 (spf "score file %s, copying info from %s." + expected_score_file actual_score_file); + raise (UnixExit 1); + end + else begin + pr2 "Current score is greater than expected, :)"; + pr2 "Generating new expected score file and saving old one"; + Common.command2_y_or_no_exit_if_no + (spf "mv %s %s" expected_score_file (expected_score_file ^ ".save")); + Common.command2_y_or_no_exit_if_no + (spf "mv %s %s" best_of_both_file expected_score_file); + raise (UnixExit 0); + end + end (* ------------------------------------------------------------------------ *) @@ -208,9 +256,9 @@ let test_okfailed cocci_file cfiles = try ( Common.timeout_function_opt !Flag_cocci.timeout (fun () -> - - let outfiles = Cocci.full_engine (cocci_file, !Config.std_iso) cfiles - in + let cocci_infos = Cocci.pre_engine (cocci_file, !Config.std_iso) in + let outfiles = Cocci.full_engine cocci_infos cfiles in + Cocci.post_engine cocci_infos; let time_str = time_per_file_str () in @@ -251,14 +299,14 @@ let test_okfailed cocci_file cfiles = let diff = Compare_c.compare_default outfile expected_res in let s1 = (Compare_c.compare_result_to_string diff) in - if fst diff = Compare_c.Correct + if fst diff =*= Compare_c.Correct then push2 (infile ^ (t_to_s Ok), [s1;time_str]) final_files else if Common.lfile_exists expected_res2 then begin let diff = Compare_c.compare_default outfile expected_res2 in let s2 = Compare_c.compare_result_to_string diff in - if fst diff = Compare_c.Correct + if fst diff =*= Compare_c.Correct then push2 (infile ^ (t_to_s SpatchOK),[s2;s1;time_str]) final_files else push2 (infile ^ (t_to_s Failed), [s2;s1;time_str]) @@ -354,14 +402,14 @@ let compare_with_expected outfiles = in let diff = Compare_c.compare_default outfile expected_res in let s1 = (Compare_c.compare_result_to_string diff) in - if fst diff = Compare_c.Correct + if fst diff =*= Compare_c.Correct then pr2_no_nl (infile ^ " " ^ s1) else if Common.lfile_exists expected_res2 then begin let diff = Compare_c.compare_default outfile expected_res2 in let s2 = Compare_c.compare_result_to_string diff in - if fst diff = Compare_c.Correct + if fst diff =*= Compare_c.Correct then pr2 (infile ^ " is spatchOK " ^ s2) else pr2 (infile ^ " is failed " ^ s2) end diff --git a/tests/SCORE_expected.sexp b/tests/SCORE_expected.sexp new file mode 100644 index 0000000..74987fd --- /dev/null +++ b/tests/SCORE_expected.sexp @@ -0,0 +1,145 @@ +((a3d.res Ok) (a_and_e.res Ok) (a_and_e_ver1.res Ok) (addelse.res Ok) + (addif.res Ok) (addif1.res Ok) (addif2.res Ok) (after_if.res Ok) + (anon.res Ok) (ar.res Ok) (arg.res Ok) (argument.res Ok) (array_init.res Ok) + (array_size.res Ok) (arraysz.res Ok) (b1.res Ok) (b2.res Ok) + (bad_iso_example.res + (Pb + "INCORRECT:diff token: ( VS x\nFile \"tests/bad_iso_example.c\", line 2, column 6, charpos = 19\n around = '(', whole content = if ((x = 3)) return;\nFile \"tests/bad_iso_example.res\", line 2, column 6, charpos = 19\n around = 'x', whole content = if (x) return;\n\n diff (result(<) vs expected_result(>)) = \n @@ -1,4 +1,4 @@\n int main() {\n - if ((x = 3)) return;\n + if (x) return;\n }\n \n")) + (bad_ptr_print.res Ok) (bad_typedef.res Ok) (badexp.res Ok) + (badpos.res + (Pb + "PROBLEM\n exn = Failure(\"rule starting on line 1: already tagged token:\\nFile \\\"tests/badpos.c\\\", line 5, column 30, charpos = 139\\n around = 'reg_ptr', whole content = \\t (int) -(((struct pt_regs *) reg_ptr)->orig_eax + 2));\")\n")) + (badtypedef.res Ok) (ben.res Ok) (bitfield.res Ok) (braces.res Ok) + (break.res Ok) (bug1.res Ok) + (bugloop.res + (Pb + "PROBLEM\n exn = Failure(\"try to delete an expanded token: flags\")\n")) + (bugon.res Ok) (cards.res Ok) (cast.res Ok) (cast_iso.res Ok) + (compare.res Ok) (const.res Ok) (const1bis.res Ok) (const_adding.res Ok) + (const_array.res Ok) (const_implicit_iso.res Ok) (constty.res Ok) + (constx.res Ok) (cs_check.res Ok) (cst.res Ok) (csw.res Ok) + (dbg.res + (Pb + "INCORRECT:diff token: else VS (\nFile , line 8, column 2, charpos = 133\n around = 'else', whole content = \t\telse pr = NULL;;\nFile \"tests/dbg.res\", line 7, column 5, charpos = 130\n around = '(', whole content = \t\tDBG(\"PCI\");\n\n diff (result(<) vs expected_result(>)) = \n @@ -4,6 +4,6 @@\n \tstruct resource *pr, *r = &dev->resource[idx];\n \n \tif (pr)\n -\t\tDBG\n -\t\telse pr = NULL;;\n +\t\tDBG(\"PCI\");\n +\telse pr = NULL;\n }\n")) + (dc_close.res Ok) (debug.res Ok) (dec.res Ok) (decl.res Ok) (decl2.res Ok) + (decl_space.res Ok) + (decl_split.res + (Pb + "INCORRECT:diff token: int VS }\nFile \"tests/decl_split.c\", line 2, column 8, charpos = 27\n around = 'int', whole content = int x, y;\nFile \"tests/decl_split.res\", line 2, column 0, charpos = 19\n around = '}', whole content = }\n\n diff (result(<) vs expected_result(>)) = \n @@ -1,3 +1,2 @@\n int func(int i) { \n - int x, y;\n }\n")) + (define_exp.res Ok) (define_param.res Ok) (deftodo.res Ok) (deref.res Ok) + (devlink.res Ok) (disjexpr.res Ok) (disjexpr_ver1.res Ok) + (disjexpr_ver2.res Ok) (distribute.res Ok) (double.res Ok) + (double_assign.res Ok) + (double_switch.res (Pb "PROBLEM\n exn = Common.Impossible\n")) + (doublepos.res Ok) + (doubleswitch.res (Pb "PROBLEM\n exn = Common.Impossible\n")) + (dowhile.res Ok) (dropf.res Ok) (dropparam.res Ok) (edots.res Ok) + (edots_ver1.res Ok) (empty.res Ok) (end_commas.res Ok) (endif.res Ok) + (exp.res Ok) (expnest.res Ok) (expopt.res Ok) (expopt2.res Ok) + (expopt3.res Ok) (expopt3_ver1.res Ok) (expopt3_ver2.res Ok) (fields.res Ok) + (fieldsmin.res Ok) (fix_flow_need.res Ok) (fn_todo.res Ok) (fnptr.res Ok) + (fnret.res Ok) (four.res Ok) (foura.res Ok) (fp.res Ok) (fun.res Ok) + (gilles-question.res Ok) (gotobreak.res Ok) (hd.res Ok) (headers.res Ok) + (hex.res Ok) + (hil1.res Ok) (if.res Ok) (ifbr.res Ok) (ifdef1.res Ok) (ifdef2.res Ok) + (ifdef3.res + (Pb + "PROBLEM\n exn = Lexer_cocci.Lexical(\"unrecognised symbol, in token rule: #\")\n")) + (ifdef4.res Ok) (ifdef5.res Ok) (ifdef6.res Ok) (ifdef6a.res Ok) + (ifend.res Ok) (ifzer.res Ok) (inc.res Ok) + (incdir.res + (Pb + "INCORRECT:diff token: x VS 12\nFile \"tests/incdir.c\", line 4, column 6, charpos = 46\n around = 'x', whole content = foo(x);\nFile \"tests/incdir.res\", line 4, column 6, charpos = 46\n around = '12', whole content = foo(12);\n\n diff (result(<) vs expected_result(>)) = \n @@ -1,5 +1,5 @@\n #include \"sub/incdir2.c\"\n \n int main () {\n - foo(x);\n + foo(12);\n }\n")) + (incl.res Ok) (inclifdef.res Ok) (include.res Ok) + (incompatible_value.res Ok) (inherited.res Ok) (inherited_ver1.res Ok) + (inhpos.res Ok) (initializer.res Ok) (initializer_many_fields.res Ok) + (inline.res Ok) (isococci.res Ok) (isotest.res Ok) (isotest2.res Ok) + (iterator.res Ok) + (jloop1.res + (Pb + "PROBLEM\n exn = Failure(\"minus: parse error: \\n = File \\\"tests/jloop1.cocci\\\", line 10, column 3, charpos = 129\\n around = '...>', whole content = ...>\\n\")\n")) + (julia10.res Ok) (julia7.res Ok) (keep_comma.res Ok) + (km.res + (Pb + "INCORRECT:diff token: } VS memset\nFile , line 4, column 0, charpos = 85\n around = '}', whole content = }\nFile \"tests/km.res\", line 4, column 2, charpos = 87\n around = 'memset', whole content = memset(data, 0, element->string.length + 1);\n\n diff (result(<) vs expected_result(>)) = \n @@ -1,4 +1,5 @@\n int main() {\n int *data = kzalloc(element->string.length + 1, GFP_KERNEL);\n foo();\n + memset(data, 0, element->string.length + 1);\n }\n")) + (kmalloc.res Ok) (kmc.res Ok) (ktype.res Ok) + (labels_metastatement.res + (Pb + "INCORRECT:diff token: { VS x\nFile , line 4, column 2, charpos = 30\n around = '{', whole content = {\nFile \"tests/labels_metastatement.res\", line 4, column 4, charpos = 32\n around = 'x', whole content = x = 3; foo();\n\n diff (result(<) vs expected_result(>)) = \n @@ -1,15 +1,10 @@\n int foo(int i) {\n \n if(1) {\n - {\n - x = 3;\n - foo();\n - z = 4;\n - foo();\n - }\n - foo();\n - }\n - foo(); // we dont want that it add both foo on the } and on the endif\n + x = 3; foo();\n + z = 4; foo();\n + } // we dont want that it add both foo on the } and on the endif\n // (note: but need correct endif accrochage)\n + foo();\n \n }\n")) + (labels_metastatement_ver1.res Ok) (local.res Ok) (localid.res Ok) + (longlong.res Ok) (longlongint.res Ok) (loop.res Ok) (lvalue.res Ok) + (macro.res Ok) (match_no_meta.res Ok) (max.res Ok) + (metahex.res + (Pb + "INCORRECT:diff token: f VS }\nFile \"tests/metahex.c\", line 2, column 2, charpos = 15\n around = 'f', whole content = f(3);\nFile \"tests/metahex.res\", line 2, column 0, charpos = 13\n around = '}', whole content = }\n\n diff (result(<) vs expected_result(>)) = \n @@ -1,4 +1,2 @@\n int main() {\n - f(3);\n - g(0x03);\n }\n")) + (metaruleelem.res Ok) (metastatement2.res Ok) (metastatement_for.res Ok) + (metastatement_if.res Ok) (minstruct.res Ok) (minusdots.res Ok) + (minusdots_ver1.res Ok) + (multi_func1.res + (Pb + "PROBLEM\n exn = Failure(\"minus: parse error: \\n = File \\\"tests/multi_func1.cocci\\\", line 12, column 2, charpos = 102\\n around = 'fn2', whole content = fn2(...) {\\n\")\n")) + (multiplus.res Ok) (multitype.res Ok) (multitypedef.res Ok) + (multivars.res Ok) (nest.res Ok) (nestone.res Ok) (nestseq.res Ok) + (neststruct.res Ok) (nl.res Ok) (nocast.res Ok) (not.res Ok) (noty.res Ok) + (null_type.res Ok) (of.res Ok) (oneline.res Ok) (opt.res Ok) + (optional_qualifier.res Ok) (optional_storage.res Ok) (orexp.res Ok) + (param.res Ok) (param_end.res Ok) (param_ver1.res Ok) + (parameters_dots.res Ok) (partial.res Ok) + (pb_distribute_type.res + (Pb + "INCORRECT:PB parsing only in generated-file\n diff (result(<) vs expected_result(>)) = \n @@ -5,11 +5,11 @@\n \n \n int foo() {\n - int * *x;\n + int **x;\n return 0;\n }\n \n int foo() {\n - int[45] *x;\n + int (*x)[45];\n return 0;\n }\n")) + (pb_distribute_type2.res + (Pb + "INCORRECT:PB parsing only in generated-file\n diff (result(<) vs expected_result(>)) = \n @@ -1,5 +1,5 @@\n int foo() {\n - int* x;\n + int *x;\n return 0;\n }\n \n @@ -10,6 +10,6 @@\n }\n \n int foo() {\n - int x[45]*;\n + int (*x)[45];\n return 0;\n }\n")) + (pb_distribute_type3.res + (Pb "PROBLEM\n exn = Failure(\"line 7: index 53 53 already used\\n\")\n")) + (pb_distribute_type4.res Ok) (pb_params_iso.res Ok) + (pb_parsing_macro.res Ok) (pb_tag_symbols.res Ok) (pmac.res Ok) + (posiso.res Ok) (positionc.res Ok) (post.res Ok) (print_return.res Ok) + (proto.res Ok) (proto2.res Ok) (proto_ver1.res Ok) (proto_ver2.res Ok) + (protoassert.res Ok) (protox.res Ok) (rcu3.res Ok) + (remstruct.res + (Pb + "INCORRECT:not same number of entities (func, decl, ...)\n diff (result(<) vs expected_result(>)) = \n @@ -1,10 +1,3 @@\n -\n - .ack = mpuio_ack_irq,\n - .mask = mpuio_mask_irq,\n - .unmask = mpuio_unmask_irq\n -\n - .b = 15,\n -\n int hello ( String input )\n {\n String input = input.lowercase();\n")) + (replace_typedef.res Ok) (reserved.res Ok) (retmacro.res Ok) (rets.res Ok) + (return.res Ok) (return_implicit.res Ok) (same_expr.res Ok) + (scope_problem.res + (Pb + "INCORRECT:diff token: } VS a\nFile , line 6, column 2, charpos = 44\n around = '}', whole content = }\nFile \"tests/scope_problem.res\", line 7, column 4, charpos = 49\n around = 'a', whole content = a = 2;\n\n diff (result(<) vs expected_result(>)) = \n @@ -1,8 +1,10 @@\n void main(int i) {\n \n \n +\n if(1) {\n int a;\n + a = 2;\n }\n \n \n")) + (serio.res + (Pb + "INCORRECT:diff token: init_MUTEX VS mutex_init\nFile \"tests/serio.c\", line 7, column 1, charpos = 130\n around = 'init_MUTEX', whole content = \tinit_MUTEX(&serio->drv_sem);\nFile \"tests/serio.res\", line 7, column 1, charpos = 130\n around = 'mutex_init', whole content = \tmutex_init(&serio->new_lock);\n\n diff (result(<) vs expected_result(>)) = \n @@ -4,5 +4,5 @@\n \n static void serio_init_port(struct serio *serio)\n {\n -\tinit_MUTEX(&serio->drv_sem);\n +\tmutex_init(&serio->new_lock);\n }\n")) + (shared_brace.res Ok) (signed.res Ok) (sis.res Ok) (sizeof.res Ok) + (sizeof_julia.res Ok) (skip.res Ok) (sp.res Ok) (spaces.res Ok) (spl.res Ok) + (static.res (Pb "PROBLEM\n exn = Common.Impossible\n")) (stm1.res Ok) + (stm10.res Ok) (stm10_ver1.res Ok) (stm2.res Ok) (stm3.res Ok) (stm4.res Ok) + (stm5.res Ok) (stm6.res Ok) (stm7.res Ok) (stm8.res Ok) (stmt.res Ok) + (strangeorder.res Ok) (string.res Ok) (struct.res Ok) + (struct_metavar.res Ok) (struct_typedef.res Ok) (structfoo.res Ok) + (substruct.res Ok) (sw.res Ok) (switch.res Ok) (td.res Ok) (test0.res Ok) + (test1.res Ok) (test10.res Ok) (test10_ver1.res Ok) (test11.res Ok) + (test11_ver1.res Ok) (test12.res Ok) (test2.res Ok) (test3.res Ok) + (test4.res Ok) (test5.res Ok) (test5_ver1.res Ok) (test6.res Ok) + (test7.res Ok) (test8.res Ok) (test9.res Ok) (test_unsigned_meta.res Ok) + (three_types.res Ok) (threea.res Ok) (top.res Ok) (topdec.res Ok) + (topdec_ver1.res Ok) (topdec_ver2.res Ok) (toplevel_macrostmt.res Ok) + (toplevel_struct.res Ok) (tup.res Ok) (twoproto.res Ok) (ty.res Ok) + (ty1.res Ok) (ty_tyexp.res Ok) (type.res Ok) (type1.res Ok) + (type_annotated.res Ok) (type_ver1.res Ok) + (type_ver2.res + (Pb + "INCORRECT:PB parsing only in generated-file\n diff (result(<) vs expected_result(>)) = \n @@ -1,5 +1,5 @@\n int foo() {\n - int[10] *x;\n + int *x[10];\n return 0;\n }\n \n")) + (typedef.res Ok) + (typedef3.res + (Pb + "INCORRECT:diff token: link VS p_dev\nFile , line 7, column 29, charpos = 137\n around = 'link', whole content = \tunsigned int iobase = info->link.io.BasePort1;\nFile \"tests/typedef3.res\", line 7, column 29, charpos = 137\n around = 'p_dev', whole content = \tunsigned int iobase = info->p_dev->io.BasePort1;\n\n diff (result(<) vs expected_result(>)) = \n @@ -4,7 +4,7 @@\n \n static void should_work(foo *info)\n {\n -\tunsigned int iobase = info->link.io.BasePort1;\n +\tunsigned int iobase = info->p_dev->io.BasePort1;\n }\n \n static void does_work(struct bluecard_info_t *info)\n")) + (typedef_double.res Ok) + (typeof.res + (Pb + "INCORRECT:diff token: x VS sizeof\nFile , line 3, column 4, charpos = 26\n around = 'x', whole content = f(x);\nFile \"tests/typeof.res\", line 3, column 4, charpos = 26\n around = 'sizeof', whole content = f(sizeof(struct foo));\n\n diff (result(<) vs expected_result(>)) = \n @@ -1,4 +1,4 @@\n int main() {\n int x;\n - f(x);\n + f(sizeof(struct foo));\n }\n")) + (useless_cast.res Ok) (varargs.res Ok) (video1bis.res Ok) (void.res Ok) + (vpos.res Ok) (whitespace.res Ok) (wierd_argument.res Ok) + (wierdinit.res + (Pb + "seems incorrect, but only because of code that was not parsablediff token: dev_link_t VS struct\nFile \"tests/wierdinit.c\", line 4, column 1, charpos = 27\n around = 'dev_link_t', whole content = \tdev_link_t *link;\nFile \"tests/wierdinit.res\", line 4, column 1, charpos = 27\n around = 'struct', whole content = \tstruct pcmcia_device *link;\n")) + (ws2.res Ok) (y2.res Ok) (zero.res Ok)) \ No newline at end of file diff --git a/tests/A_and_E.c b/tests/a_and_e.c similarity index 100% rename from tests/A_and_E.c rename to tests/a_and_e.c diff --git a/tests/A_and_E.cocci b/tests/a_and_e.cocci similarity index 100% rename from tests/A_and_E.cocci rename to tests/a_and_e.cocci diff --git a/tests/A_and_E.res b/tests/a_and_e.res similarity index 100% rename from tests/A_and_E.res rename to tests/a_and_e.res diff --git a/tests/A_and_E_ver1.c b/tests/a_and_e_ver1.c similarity index 100% rename from tests/A_and_E_ver1.c rename to tests/a_and_e_ver1.c diff --git a/tests/A_and_E_ver1.res b/tests/a_and_e_ver1.res similarity index 100% rename from tests/A_and_E_ver1.res rename to tests/a_and_e_ver1.res diff --git a/tests/bugon.cocci b/tests/bugon.cocci index bc478a4..e03afca 100644 --- a/tests/bugon.cocci +++ b/tests/bugon.cocci @@ -1,4 +1,4 @@ -@@ expression E; @@ +@disable unlikely@ expression E; @@ - if (unlikely(E)) { BUG(); } + BUG_ON(E); diff --git a/tests/bugon.res b/tests/bugon.res index 047bb23..8276c07 100644 --- a/tests/bugon.res +++ b/tests/bugon.res @@ -1,4 +1,4 @@ static void b44_tx(struct b44 *bp) { - BUG(skb == NULL); + BUG_ON(skb == NULL); } diff --git a/tests/double_switch.c b/tests/double_switch.c new file mode 100644 index 0000000..e86ce11 --- /dev/null +++ b/tests/double_switch.c @@ -0,0 +1,15 @@ + +static NTSTATUS get_line_control(int fd, SERIAL_LINE_CONTROL* slc) +{ +#ifdef CMSPAR + switch (port.c_cflag & (PARENB | PARODD | CMSPAR)) +#else + switch (port.c_cflag & (PARENB | PARODD)) +#endif + { + case 0: slc->Parity = NOPARITY; break; + case PARENB: slc->Parity = EVENPARITY; break; + case PARENB|PARODD: slc->Parity = ODDPARITY; break; + } + return STATUS_SUCCESS; +} diff --git a/tests/double_switch.cocci b/tests/double_switch.cocci new file mode 100644 index 0000000..06b3d0b --- /dev/null +++ b/tests/double_switch.cocci @@ -0,0 +1,7 @@ +@s@ +expression E; +position p; +@@ + +- E@p < 0 ++ 12 diff --git a/tests/double_switch.res b/tests/double_switch.res new file mode 100644 index 0000000..e86ce11 --- /dev/null +++ b/tests/double_switch.res @@ -0,0 +1,15 @@ + +static NTSTATUS get_line_control(int fd, SERIAL_LINE_CONTROL* slc) +{ +#ifdef CMSPAR + switch (port.c_cflag & (PARENB | PARODD | CMSPAR)) +#else + switch (port.c_cflag & (PARENB | PARODD)) +#endif + { + case 0: slc->Parity = NOPARITY; break; + case PARENB: slc->Parity = EVENPARITY; break; + case PARENB|PARODD: slc->Parity = ODDPARITY; break; + } + return STATUS_SUCCESS; +} diff --git a/tests/longlongint.c b/tests/longlongint.c new file mode 100644 index 0000000..5710250 --- /dev/null +++ b/tests/longlongint.c @@ -0,0 +1,9 @@ +int main() { + unsigned int x; + int y; + unsigned long long int a; + long long int b; + unsigned long long m; + long long n; + return 0; +} diff --git a/tests/longlongint.cocci b/tests/longlongint.cocci new file mode 100644 index 0000000..05ee26b --- /dev/null +++ b/tests/longlongint.cocci @@ -0,0 +1,8 @@ +@@ +type T; +identifier x,y; +@@ + +- unsigned T x; +- T y; + ... when any diff --git a/tests/hex2.res b/tests/longlongint.res similarity index 55% rename from tests/hex2.res rename to tests/longlongint.res index b2f9976..4cce7f6 100644 --- a/tests/hex2.res +++ b/tests/longlongint.res @@ -1,2 +1,3 @@ int main() { + return 0; } diff --git a/tests/not_converted.c b/tests/not_converted.c new file mode 100644 index 0000000..1e11ed2 --- /dev/null +++ b/tests/not_converted.c @@ -0,0 +1,14 @@ +// -ifdef_to_if doesn't convert this ifdef + +ssize_t __net_Write( vlc_object_t *p_this, int fd, const v_socket_t *p_vs, + const uint8_t *p_data, size_t i_data ) +{ + if (p_vs != NULL) + val = p_vs->pf_send (p_vs->p_sys, p_data, i_data); + else +#ifdef WIN32 + val = send (fd, p_data, i_data, 0); +#else + val = write (fd, p_data, i_data); +#endif +} diff --git a/tests/not_converted.cocci b/tests/not_converted.cocci new file mode 100644 index 0000000..927f0ea --- /dev/null +++ b/tests/not_converted.cocci @@ -0,0 +1,46 @@ +// A variable is used between two affectations. +// +// Confidence: High +// Copyright: (C) Nicolas Palix, Julia Lawall, DIKU. GPLv2. +// URL: +// Options: -ifdef_to_if + +@filter@ +local idexpression E; +expression Er; +@@ + +E = Er; + +@r @ +local idexpression filter.E; +position b; +position e,f; +expression E1; +expression E2; +@@ + +E@b = E1; +... when != E + when strict +( +E@f = <+...E...+>; +| +E@e = E2; +) + +@script:python@ +p1 << r.b; +p2 << r.e; +p3 << r.f; +@@ + +cocci.include_match(False) + +@script:python@ +p1 << r.b; +p2 << r.e; +@@ + +cocci.print_main("",p1) +cocci.print_secs("",p2) diff --git a/tests/not_converted_ver1.c b/tests/not_converted_ver1.c new file mode 100644 index 0000000..93de545 --- /dev/null +++ b/tests/not_converted_ver1.c @@ -0,0 +1,92 @@ +// -ifdef_to_if doesn't convert this ifdef + +static int do_accept(int acc_sock, int *sock, char **host) + { + int ret,i; + struct hostent *h1,*h2; + static struct sockaddr_in from; + int len; +/* struct linger ling; */ + + if (!ssl_sock_init()) return(0); + +#ifndef OPENSSL_SYS_WINDOWS +redoit: +#endif + + memset((char *)&from,0,sizeof(from)); + len=sizeof(from); + /* Note: under VMS with SOCKETSHR the fourth parameter is currently + * of type (int *) whereas under other systems it is (void *) if + * you don't have a cast it will choke the compiler: if you do + * have a cast then you can either go for (int *) or (void *). + */ + ret=accept(acc_sock,(struct sockaddr *)&from,(void *)&len); + if (ret == INVALID_SOCKET) + { +#if defined(OPENSSL_SYS_WINDOWS) || (defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK)) + i=WSAGetLastError(); + BIO_printf(bio_err,"accept error %d\n",i); +#else + if (errno == EINTR) + { + /*check_timeout(); */ + goto redoit; + } + fprintf(stderr,"errno=%d ",errno); + perror("accept"); +#endif + return(0); + } + +/* + ling.l_onoff=1; + ling.l_linger=0; + i=setsockopt(ret,SOL_SOCKET,SO_LINGER,(char *)&ling,sizeof(ling)); + if (i < 0) { perror("linger"); return(0); } + i=0; + i=setsockopt(ret,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i)); + if (i < 0) { perror("keepalive"); return(0); } +*/ + + if (host == NULL) goto end; +#ifndef BIT_FIELD_LIMITS + /* I should use WSAAsyncGetHostByName() under windows */ + h1=gethostbyaddr((char *)&from.sin_addr.s_addr, + sizeof(from.sin_addr.s_addr),AF_INET); +#else + h1=gethostbyaddr((char *)&from.sin_addr, + sizeof(struct in_addr),AF_INET); +#endif + if (h1 == NULL) + { + BIO_printf(bio_err,"bad gethostbyaddr\n"); + *host=NULL; + /* return(0); */ + } + else + { + if ((*host=(char *)OPENSSL_malloc(strlen(h1->h_name)+1)) == NULL) + { + perror("OPENSSL_malloc"); + return(0); + } + BUF_strlcpy(*host,h1->h_name,strlen(h1->h_name)+1); + + h2=GetHostByName(*host); + if (h2 == NULL) + { + BIO_printf(bio_err,"gethostbyname failure\n"); + return(0); + } + i=0; + if (h2->h_addrtype != AF_INET) + { + BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n"); + return(0); + } + } +end: + *sock=ret; + return(1); + } diff --git a/tests/pb_parsing_macro.c b/tests/pb_parsing_macro.c new file mode 100644 index 0000000..5552f55 --- /dev/null +++ b/tests/pb_parsing_macro.c @@ -0,0 +1,4 @@ +#define FOO_METH_TEST(a) prefix_##a +void FOO_METH_TEST(foo)(int x){ + alloca(x); +} diff --git a/tests/pb_parsing_macro.cocci b/tests/pb_parsing_macro.cocci new file mode 100644 index 0000000..fc9db81 --- /dev/null +++ b/tests/pb_parsing_macro.cocci @@ -0,0 +1,5 @@ +@@ expression E; @@ + +-alloca(E) ++malloc(E) + diff --git a/tests/pb_parsing_macro.res b/tests/pb_parsing_macro.res new file mode 100644 index 0000000..aa1042d --- /dev/null +++ b/tests/pb_parsing_macro.res @@ -0,0 +1,4 @@ +#define FOO_METH_TEST(a) prefix_##a +void FOO_METH_TEST(foo)(int x){ + malloc(x); +} diff --git a/tools/Makefile b/tools/Makefile index 3ef9dfc..cd6da6a 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -29,13 +29,13 @@ install_bridge: bridge .PHONY: $(SUBDIRS) -SYSLIBS = str.cma unix.cma +SYSLIBS = str.cma unix.cma INCLUDE=-I ../commons -I ../extra -I ../parsing_c LIBS=../commons/commons.cma ../globals/globals.cma \ - ../parsing_c/parsing_c.cma ../extra/extra.cma + ../parsing_c/parsing_c.cma ../extra/extra.cma -OCAMLC=ocamlc$(OPTBIN) -g -dtypes $(INCLUDE) +OCAMLC=ocamlc$(OPTBIN) -g -dtypes $(INCLUDE) OCAMLOPT=ocamlopt$(OPTBIN) $(INCLUDE) $(OPTFLAGS) #OCAMLLEX=ocamllex$(OPTBIN) -ml OCAMLLEX=ocamllex$(OPTBIN) @@ -70,4 +70,7 @@ beforedepend:: depend:: beforedepend ocamldep $(INCLUDE) *.mli *.ml > .depend +distclean:: + rm -f .depend + -include .depend -- 2.20.1

    1z=0pN%< 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

    xo7?E+s!mF(=6X6>Lof{wlzS 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